Pharo шустрость

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Pharo шустрость

vmusulainen-2
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: Pharo шустрость

Igor Stasenko
2011/8/2 Владимир Мусулайнен <[hidden email]>:

> Немудреный такой тест.
>
> 1. Pharo basic VM
> 2. Pharo cog VM
> 3. Cincom St
>
> 1. Time millisecondsToRun: [10000 factorial]  663
> 2. Time millisecondsToRun: [10000 factorial]  574
> 3. Time millisecondsToRun: [10000 factorial]  270
>

Микро-бенчмарки бесполезны ибо не дают полной картины.

Если уж речь о микро-бенчмарках - то "стандартный" бенч которым все
пользуются это

1 tinyBenchmarks

но конечно все эти микро-тесты не дают полной картины.

> Открытие 100 пустых окон и отдельно удаление этих окон
> код для Pharo:
> Time millisecondsToRun:
>                [windows := OrderedCollection new.
>                100 timesRepeat:
>                                [| window |
>                                window := StandardWindow new.
>                                windows add: window.
>                                window openInWorld]].
>
> Time millisecondsToRun: [windows do: [:each | each delete]]
>
> Код для VW ST:
> Time millisecondsToRun:
>                [windows := OrderedCollection new.
>                100 timesRepeat:
>                                [| window |
>                                window := ScheduledWindow new.
>                                windows add: window.
>                                window open]].
>
> Time millisecondsToRun: [windows do: [:each | each close]]
>
> 1. 1542 и 720
> 2. 459 и 158
> 3. 3044 и  64
>

Ну здесь вообще очень (мягко сказано) условное сравнение. Потому как
совершенно разные фреймворки.

>
> Далее, заметил как-то сильное различие на выполнение 10000 factorial,
> то pharo выдаст за 700 ms, то 900 ms.

это батенька работа Garbage Collector.

> Сделал следующее:
> times := OrderedCollection new.
> 10 timesRepeat: [times add: (Time millisecondsToRun: [10000
> factorial])].
> times inspect
>
> 1. #(936 1103 1165 924 883 893 966 861 888 1060)
> 2. #(771 813 769 830 838 799 752 766 820 742)
> 3. #(273 273 273 273 279 279 275 274 274 274)
>

Я бы посоветовал Вам сравнивать вещи, которые действительно важны и
критичны для проекта:
  работы с коллекциями, потоками, файлами, сокетами и т.п.
Вместо того, чтобы измерять время работы вещей, которые совершенно
никакой погоды (никогда) не делают.
:)

> --
> http://groups.google.ru/group/sugr



--
Best regards,
Igor Stasenko AKA sig.

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Pharo шустрость

Alex Kogan
Coгласен с Игорем. Чисто теоретически. Подозреваю primitive 29 под pharo не работает или не существует поэтому умножение LargePositiveInteger происходит в Smalltalk в отличии от VW.

2011/8/2 Igor Stasenko <[hidden email]>
2011/8/2 Владимир Мусулайнен <[hidden email]>:
> Немудреный такой тест.
>
> 1. Pharo basic VM
> 2. Pharo cog VM
> 3. Cincom St
>
> 1. Time millisecondsToRun: [10000 factorial]  663
> 2. Time millisecondsToRun: [10000 factorial]  574
> 3. Time millisecondsToRun: [10000 factorial]  270
>

Микро-бенчмарки бесполезны ибо не дают полной картины.

Если уж речь о микро-бенчмарках - то "стандартный" бенч которым все
пользуются это

1 tinyBenchmarks

но конечно все эти микро-тесты не дают полной картины.

> Открытие 100 пустых окон и отдельно удаление этих окон
> код для Pharo:
> Time millisecondsToRun:
>                [windows := OrderedCollection new.
>                100 timesRepeat:
>                                [| window |
>                                window := StandardWindow new.
>                                windows add: window.
>                                window openInWorld]].
>
> Time millisecondsToRun: [windows do: [:each | each delete]]
>
> Код для VW ST:
> Time millisecondsToRun:
>                [windows := OrderedCollection new.
>                100 timesRepeat:
>                                [| window |
>                                window := ScheduledWindow new.
>                                windows add: window.
>                                window open]].
>
> Time millisecondsToRun: [windows do: [:each | each close]]
>
> 1. 1542 и 720
> 2. 459 и 158
> 3. 3044 и  64
>

Ну здесь вообще очень (мягко сказано) условное сравнение. Потому как
совершенно разные фреймворки.

>
> Далее, заметил как-то сильное различие на выполнение 10000 factorial,
> то pharo выдаст за 700 ms, то 900 ms.

это батенька работа Garbage Collector.

> Сделал следующее:
> times := OrderedCollection new.
> 10 timesRepeat: [times add: (Time millisecondsToRun: [10000
> factorial])].
> times inspect
>
> 1. #(936 1103 1165 924 883 893 966 861 888 1060)
> 2. #(771 813 769 830 838 799 752 766 820 742)
> 3. #(273 273 273 273 279 279 275 274 274 274)
>

Я бы посоветовал Вам сравнивать вещи, которые действительно важны и
критичны для проекта:
 работы с коллекциями, потоками, файлами, сокетами и т.п.
Вместо того, чтобы измерять время работы вещей, которые совершенно
никакой погоды (никогда) не делают.
:)

> --
--
Best regards,
Igor Stasenko AKA sig.

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Pharo шустрость

vmusulainen-2
In reply to this post by Igor Stasenko
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: Pharo шустрость

Igor Stasenko
2011/8/2 Владимир Мусулайнен <[hidden email]>:

> Игорь, я предвидел такой ответ и он, на мой взгляд, справедлив. Но
> лишь отчасти.
>
>> Микро-бенчмарки бесполезны ибо не дают полной картины.
>
> Про микробенчмарки - ну что подвернулось на скорую руку. Собственно, я
> решил за минуту это проделать, так как мне сегодня пожаловался дядька
> на медленность Pharo.Он вообще рубист, но я ему как-то расписывал
> давненько Seaside. И он решил попробовать, сначала на Cincom с полгода
> назад. А вот сейчас на Pharo. Так вот,  он посмотрел на простое
> seaside приложение (из примеров, где икренментируют/декрементируют
> число) и оно работало гораздо медленее, чем в Cincom. Поэтому и сделал
> несколько сравнений - только на ядро и только на UI. Веб с сисайдом
> оставил в стороне, не хотелось возиться дольше пару минут. Просто для
> оценки навскидку.
>
>

Ну что я могу сказать, VW конечно быстрее, ибо JIT там разрабатывался годами,
тогда как Cog появился сравнительно недавно.
Есть много обьективных причин почему там быстрее.

>
>> это батенька работа Garbage Collector.
>
> Да понятно, что GC. Я правильно понимаю, что он может вылезти во время
> активных вычислений?
> Я к тому, что, насколько я помню, у Cincom мусорщик не вылезает во
> время работы, за исключением того момента, когда память у ВМ
> кончилась, и тут уж, хошь не хошь, чистить надо.
>
Ну тут вопрос в том, сколько итераций проходит между полным "сливом бачка" :)
т.е. сколько надо намусорить чтоб произошел полный скан памяти (и ее очистка)
Эти параметры можно тюнить - смотрите раздел GC в SmalltalkImage.

>> Я бы посоветовал Вам сравнивать вещи, которые действительно важны и
>> критичны для проекта:
>>   работы с коллекциями, потоками, файлами, сокетами и т.п.
>
> Да вот не критично мне как раз это :).
>
> Мне Pharo нужен на 50% за UI. Поэтому для меня это вещи важные.
> И для любого прикладного программиста разрабатывающего desktop-
> приложения, тем более тиражируемые приложения для хомячков (home
> user), работа UI интерфейса - очень важна. Он должен быть красив и
> быстр.
> И в большинстве десктоп-приложений нет какой-то мудреной логики,
> большого объема вычислений.
> Возьмем обычный ToDo-List, или домашнюю бухгалтерию. Там 90% всей
> работы программиста в создании интерфейса.
>
> Поэтому еще раз повторюсь: UI важен для десктоп приложений.
> Если позиционировать Pharo как и Ruby для веба или скриптования, то
> да, тут наплевать.
>
К вопросу UI советую глянуть на Moose.
Они используют Glamour для постройки интерфейса.

Опять же - я каждый день с UI - иногда открыто по 20 окон и скорость
меня вполне устравивает.
Конечно всегда хочется быть еще быстрее, но по ощущениям я бы сказал
что меня не раздражает "медленность"
ибо во время работы никаких особых тормозов я не замечаю, т.е. делать
UI-приложения можно :)

Сравнивать конечно можно по скорости с другими фреймворками, но
насколько это критично?

>
> К вопросу "Ты за первый интернационал или за второй?" Я не ругаю Pharo
> и готов, по мере сил и скудных познаний/умений, проложить руки к
> развитию.
> Но понимать, можно ли сейчас использовать тот или иной язык/диалект/
> фреймворк для решения какой-либо задачи, тоже нужно и важно.
>

Можно. :) Тем более что чем больше пользователей и активных проектов -
тем больше приток улучшений.
Я понимаю, Вы стоите перед нелегким выбором - что брать за основу для
своего проекта VW или Pharo.
Я не в праве давать советы ибо естественно моя позиция не нейтральна :)

Просто хочу напомнить, что VW это коммерческий продукт. И на
определенном этапе вам придется платить денежки
за его использование. Причем их бизнес политика оставляет желать
лучшего (насколько я слышал, они просят не много ни мало - процент с
вашего общего дохода).
Хотя конечно все течет, все меняется. :)

>
> On 2 авг, 21:56, Igor Stasenko <[hidden email]> wrote:
>> 2011/8/2 Владимир Мусулайнен <[hidden email]>:
>>
>> > Немудреный такой тест.
>>
>> > 1. Pharo basic VM
>> > 2. Pharo cog VM
>> > 3. Cincom St
>>
>> > 1. Time millisecondsToRun: [10000 factorial]  663
>> > 2. Time millisecondsToRun: [10000 factorial]  574
>> > 3. Time millisecondsToRun: [10000 factorial]  270
>>
>> Микро-бенчмарки бесполезны ибо не дают полной картины.
>>
>> Если уж речь о микро-бенчмарках - то "стандартный" бенч которым все
>> пользуются это
>>
>> 1 tinyBenchmarks
>>
>> но конечно все эти микро-тесты не дают полной картины.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> > Открытие 100 пустых окон и отдельно удаление этих окон
>> > код для Pharo:
>> > Time millisecondsToRun:
>> >                [windows := OrderedCollection new.
>> >                100 timesRepeat:
>> >                                [| window |
>> >                                window := StandardWindow new.
>> >                                windows add: window.
>> >                                window openInWorld]].
>>
>> > Time millisecondsToRun: [windows do: [:each | each delete]]
>>
>> > Код для VW ST:
>> > Time millisecondsToRun:
>> >                [windows := OrderedCollection new.
>> >                100 timesRepeat:
>> >                                [| window |
>> >                                window := ScheduledWindow new.
>> >                                windows add: window.
>> >                                window open]].
>>
>> > Time millisecondsToRun: [windows do: [:each | each close]]
>>
>> > 1. 1542 и 720
>> > 2. 459 и 158
>> > 3. 3044 и  64
>>
>> Ну здесь вообще очень (мягко сказано) условное сравнение. Потому как
>> совершенно разные фреймворки.
>>
>>
>>
>> > Далее, заметил как-то сильное различие на выполнение 10000 factorial,
>> > то pharo выдаст за 700 ms, то 900 ms.
>>
>> это батенька работа Garbage Collector.
>>
>> > Сделал следующее:
>> > times := OrderedCollection new.
>> > 10 timesRepeat: [times add: (Time millisecondsToRun: [10000
>> > factorial])].
>> > times inspect
>>
>> > 1. #(936 1103 1165 924 883 893 966 861 888 1060)
>> > 2. #(771 813 769 830 838 799 752 766 820 742)
>> > 3. #(273 273 273 273 279 279 275 274 274 274)
>>
>> Я бы посоветовал Вам сравнивать вещи, которые действительно важны и
>> критичны для проекта:
>>   работы с коллекциями, потоками, файлами, сокетами и т.п.
>> Вместо того, чтобы измерять время работы вещей, которые совершенно
>> никакой погоды (никогда) не делают.
>> :)
>>
>> > --
>> >http://groups.google.ru/group/sugr
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>
> --
> http://groups.google.ru/group/sugr



--
Best regards,
Igor Stasenko AKA sig.

--
http://groups.google.ru/group/sugr