Re[27]: MIT переходи со схемы на...
От: Андрей Хропов Россия  
Дата: 26.11.06 14:39
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Бррр. Скорость здесь постольку-поскольку. Когда мы вводим конструкции типа repeat .. until .. то надо полагать, что мы их вводим не для того, чтобы побить все рекорды в language shootout benchmarks. Скорее всего мы это делаем для того, чтобы чего-то там выглядело более красиво.


LCR>Так вот, в этом свете замечание VK про то, что замыкания тормозят ... выглядит немного странно. В конце концов, если не нравится скорость — перепеши без использования замыканий. Предлагать же переписывать тормозящие места на макросах везде, где можно, ну я бы поостерёгся, ибо оплачивать скорость полученную макросами нам придётся усложнением поддержки — это и есть упомянутая мной выше небесплатность макросов.


Насчет усложения поддержки:

По-моему это

macro Repeater (condition, action) 
syntax ("repeatLoop", action, "until", "(", condition, ")") 
{
    <[ 
        {
            def until () {
                    $action
                    when ($condition) until();
            }
            until ()
        }
    ]>
}

не сильно сложнее чем
class Repeater( action: => unit ) {
    def until( condition: => boolean ): unit = {
        action
        if( condition ) until( condition )
    }
}

def repeatLoop( action: => unit ) = new Repeater( action )

Основная разница которую я вижу — это то, что макросы — это функции, которые живут непосредственно в модуле, в то время как в случае с замыканиями это упаковано в класс.

Но вообще макросы — это конечно механизм более низкого уровня, но зато и гораздо более мощный.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: [Benchmark] Встроенный while vs макросы vs замыкания
От: Андрей Хропов Россия  
Дата: 26.11.06 14:39
Оценка:
Здравствуйте, PhantomIvan, Вы писали:

PI>a D по скоростным характеристикам аналогичен C ?


В большинстве простых случаев что-то среднее между C и C++.
В данном тривиальном случае есть предположение что все они практически одинаково себя покажут.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: [Benchmark] Встроенный while vs макросы vs замыкания
От: Андрей Хропов Россия  
Дата: 26.11.06 14:39
Оценка:
Здравствуйте, eao197, Вы писали:

E>Возможно свет на производительность Scala замеров прольет замечание Jamie Webb о том, что в данном примере JIT вообще не запуститься.


Хм, получается что для функционального программирования JVM вообще не подходит (точнее, очень плохо подходит)?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: [Benchmark] Встроенный while vs макросы vs замыкания
От: Андрей Хропов Россия  
Дата: 26.11.06 14:39
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:


АХ>>Также можно сказать, что managed Nemerle на .NET очень близок к этим результатам, что не может не радовать .

LCR>Голый цикл while? Такие результаты можно экстраполировать как угодно, и они всё равно не будут соответствовать действительности.
Пока я выяснил, что на (C++/C#)(обычный цикл)/Nemerle(макрос) работают приблизительно с одинаковой скоростью, а D даже чуть быстрее.
В то же время Scala в 10 раз медленее. Подозреваю, что это из-за того, что цикл засунут в замыкание.

LCR> Меня вот радует, что относительный провал варианта с замыканиями в Скале всего примерно 2 раза, и это опять же ни о чём не говорит.

Провал в 2 раза только на HotSpot client JVM. На JRockit провал всего в 20%, хотя вообще медленее в 7 раз .
Но дело в том, что даже простой цикл while когда его засунули в замыкание работает на Scala в 10 раз медленее чем на C++/C#/D/Nemerle!

У меня складывается впечатление что из-за особенностей JIT-компиляции в JVM она очень плохо подходит для таких функциональных наворотов. Или же возможно оптимизатор Scala должен быть более агрессивным. Я пробовал флаг "-Xinline", но вылетела ошибка что такого модуля нет .
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[25]: MIT переходи со схемы на...
От: PhantomIvan  
Дата: 26.11.06 15:12
Оценка:
VD>Знаешь, я тоже не стану читать книгу с монитора. Но код — это не крига которую можно читать страница за страницей. Код связанная структура и без заглядывания в определения элементов на которые ссылается ткущий фрагмент кода ничего понять нельзя. Естественно, что речь идет о больших проектах.

отсюда вопрос — как вообще работают скриптовики с большими проектами?

я только с одним большим проектом дело имел такого рода (пхп), там было 2 человека, которые разбирались досконально, и учили остальных, что к чему
я же не нашел ничего лучшего, как прикрутить дебаг к пхп, и попасти систему на тестовом сайте, сам же прыгал по коду, разбирался с помощью дебаггера, что с чем связано... а как ещё...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: [Benchmark] Встроенный while vs макросы vs замыкания
От: PhantomIvan  
Дата: 26.11.06 15:12
Оценка:
PI>>a D по скоростным характеристикам аналогичен C ?

АХ>В большинстве простых случаев что-то среднее между C и C++.

АХ>В данном тривиальном случае есть предположение что все они практически одинаково себя покажут.

а какие в С++ накладные расходы по сравнению с С, кроме поддержки полиморфизма?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[29]: MIT переходи со схемы на...
От: PhantomIvan  
Дата: 26.11.06 15:12
Оценка:
PI>>>а кто ещё? WolfHound? я?

FR>>Давай обойдемся без списков врагов народа


VD> Ты это еао197 расскажи который беззастенчиво занимается составленийм подобных списков.


кстати, про "врагов народа"... а где Oyster исчез, он помнится, крут в nemerle...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[24]: MIT переходи со схемы на...
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.06 15:55
Оценка: :)
Здравствуйте, Klapaucius, Вы писали:

K>Как вы уже все поняли, без подвоха тут не обошлось. И, что мне совсем не понравилось, два опытных немерлиста пропустили ошибку и определили тип функции неверно.

K>А корень всех зол в данном случае в том, что типы уточнялись не там где надо, нес па?

Откровенно говоря смысла уточнять типы тут вообще нет. Как и заниматься визуальным контролем. Подобные ошибки отлично отловит компилятор. Не скрипт все же.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[24]: MIT переходи со схемы на...
От: PhantomIvan  
Дата: 26.11.06 16:53
Оценка:
K>Как вы уже все поняли, без подвоха тут не обошлось. И, что мне совсем не понравилось, два опытных немерлиста пропустили ошибку и определили тип функции неверно.

я не волшебник, я только учусь
всего один проект на немерле написал, пробую потихоньку, где функциональный стиль применим, а где не очень,
и пока не тулю его везде, где попало — в моей смеси пока императивное преобладает

так что нечего удивляться, к функциональщине я только привыкаю
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: [Benchmark] Встроенный while vs макросы vs замыкания на
От: IT Россия linq2db.com
Дата: 26.11.06 18:27
Оценка:
Здравствуйте, Андрей Хропов, Вы писали:

АХ>Также можно сказать, что managed Nemerle на .NET очень близок к этим результатам, что не может не радовать .


У тебя в замеры включена JIT компиляция, что есть некорректно. Попробуй её исключить, может получится ещё больше порадоваться
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re: [Benchmark] Встроенный while vs макросы vs замыкания на
От: Cyberax Марс  
Дата: 26.11.06 18:51
Оценка:
Андрей Хропов wrote:
> Хмм, очень любопытно что JRockit существенно медленнее, а HotSpot
> -server вообще нереально хуже(!) в этом случае .
Нужно предварительно "прогреть" циклы, чтобы HotSpot их скомпилировал. У
-server по умолчанию стоит больший чем у -client'а порог компиляции.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[2]: [Benchmark] Встроенный while vs макросы vs замыкания
От: Cyberax Марс  
Дата: 26.11.06 18:52
Оценка: 1 (1)
Lazy Cjow Rhrr wrote:
> АХ>А HotSpot -server вообще поразил!
> Здесь явно какой-то баг... Завтра на работе попробую погонять.
Это не баг, это фича. Цикл сначала будет очень долгое время выполняться
в interpreted-режиме.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[4]: [Benchmark] Встроенный while vs макросы vs замыкания
От: Cyberax Марс  
Дата: 26.11.06 18:54
Оценка:
PhantomIvan wrote:
> АХ>В большинстве простых случаев что-то среднее между C и C++.
> АХ>В данном тривиальном случае есть предположение что все они
> практически одинаково себя покажут.
> а какие в С++ накладные расходы по сравнению с С, кроме поддержки
> полиморфизма?
Реализация исключений с помощью sjlj (setjump-longjump), как это сделано
в Винде с SEH.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[2]: [Benchmark] Встроенный while vs макросы vs замыкания
От: Андрей Хропов Россия  
Дата: 26.11.06 18:58
Оценка: +1
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, Андрей Хропов, Вы писали:


АХ>>Также можно сказать, что managed Nemerle на .NET очень близок к этим результатам, что не может не радовать .


IT>У тебя в замеры включена JIT компиляция, что есть некорректно. Попробуй её исключить, может получится ещё больше порадоваться

Ни на что кроме Nemerle-.NET
Macro do-while : было 178 -> стало 125 ms elapsed
не повлияло.
Почти вплотную к D. Видимо это оптимум.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[28]: MIT переходи со схемы на...
От: McSeem2 США http://www.antigrain.com
Дата: 27.11.06 05:06
Оценка: -1 :))
Здравствуйте, IT, Вы писали:

IT>Мат и подонковщина заразны. Небольшое послабление и очень быстро сайт превратится в помойку.


Подонковскую лексику надо контролировать, это точно. Ну уж запрещать, так уж всем! А то товарища VladD2 надо банить за каждое второе сообщение, ибо подонковская лексика в них присутствует в изобилии. А уж намеренно он ее использует или по неграмотности — этот вопрос не должен меня беспокоить. Другое решение, вполне нормальное IMO — выдавать некоторым специальные индульгенции, которые будут означать что-то типа "Данному участнику в силу его убогости разрешается пользоваться подонковской лексикой. Он делает это не со зла, а по незнанию и заранее просит его извинить". Таким образом, форум будет поддерживаться в чистоте и в то же время не будет когнитивного диссонанса, что некоторым можно, а остальным нельзя.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[29]: MIT переходи со схемы на...
От: IT Россия linq2db.com
Дата: 27.11.06 05:17
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Подонковскую лексику надо контролировать, это точно. Ну уж запрещать, так уж всем! А то товарища VladD2 надо банить за каждое второе сообщение, ибо подонковская лексика в них присутствует в изобилии.


Можно пару примеров сообщений товариша Влада, содержащих подонковскую лексику?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[30]: MIT переходи со схемы на...
От: McSeem2 США http://www.antigrain.com
Дата: 27.11.06 05:30
Оценка: +1 :))) :)
Здравствуйте, IT, Вы писали:

IT>Можно пару примеров сообщений товариша Влада, содержащих подонковскую лексику?


Нет ничего проще, достаточно набрать в поиске "VladD2 извени" или что-то подобное.
http://www.rsdn.ru/Forum/Message.aspx?mid=1848524&amp;only=1
Автор: VladD2
Дата: 14.04.06


Да, он делает это не специально, а в силу неграмотности. Поэтому я и говорю, что нужна специальная индульгенция. Но выдавать ее нужно только заслуженным людям, уровня создателей сайта.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[22]: MIT переходи со схемы на...
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 27.11.06 05:49
Оценка: +1
Здравствуйте, PhantomIvan, Вы писали:

PI>к примеру, я кидал снипеты немерле пхп-исту (старому пхписту, которого сейчас насильно пересадили на асп.нет и он страшно ругается),


Странно наоборот радоваться должен.

PI> и после вот такого макрос-поверед снипета:

PI>
PI>    WriteLine($"Saving entries ($(entries.Length) elements) at path $path");
PI>

PI>старый пхпист воскликнул: "ё, да ведь это же спиж*ено из PHP!"
PI>"да", — ответил я, — "и очень удачно, по-мойму, спиж*ено"...

Если мне не изменяет память, в PHP не надо было преред строками ставить '$', обращение к полям классам производилось через фигурные скобки и к тому же оставалась куча ситуаций, где подобный синтаксис был неприменим. Потому, если эта фича и была украдена, то она была украдена с умом, чтобы учесть подводные камни. И введена запись через '$' ещё задолго до PHP, так что в PHP это тоже было украдено. А вообще, не стоит сравнивать Nemerle с динамикой на примере PHP, т.к. у PHP настолько кривой дизайн, что его уместно сравнивать только с самим собой.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[23]: MIT переходи со схемы на...
От: PhantomIvan  
Дата: 27.11.06 06:14
Оценка:
PI>>к примеру, я кидал снипеты немерле пхп-исту (старому пхписту, которого сейчас насильно пересадили на асп.нет и он страшно ругается),

K>Странно наоборот радоваться должен.


я же сказал, это старый пхпист: во-первых, он мыслит динамикой (скриптом), во-вторых, к смарти привык (шаблоны к пхп, позволяют гибко разделить код/дизайн), в-третьих, только асп-нет внатуре запутанная технология — некоторые "баги" происходят из ииса, некоторые еще из тысячи разных мест, и ему сначала непонятно что к чему, непонятно как что на основе компонент крутить, что куда кидать (viewstate в пхп не присутствует, например) и т.д.

PI>> и после вот такого макрос-поверед снипета:

PI>>
PI>>    WriteLine($"Saving entries ($(entries.Length) elements) at path $path");
PI>>

PI>>старый пхпист воскликнул: "ё, да ведь это же спиж*ено из PHP!"
PI>>"да", — ответил я, — "и очень удачно, по-мойму, спиж*ено"...

K>Если мне не изменяет память, в PHP не надо было преред строками ставить '$',

ага, достаточно "магические кавычки" поставить
K> обращение к полям классам производилось через фигурные скобки и к тому же оставалась куча ситуаций, где подобный синтаксис был неприменим.
ага
K> Потому, если эта фича и была украдена, то она была украдена с умом,
а я что сказал?
K> чтобы учесть подводные камни.
на самом деле ни фига не украдено, кроме идеи — а "подводных камней" тут нет вовсе
K> И введена запись через '$' ещё задолго до PHP, так что в PHP это тоже было украдено.
мобыть, пхп просто самый известный "долларовый" язык
K> А вообще, не стоит сравнивать Nemerle с динамикой на примере PHP, т.к. у PHP настолько кривой дизайн, что его уместно сравнивать только с самим собой.
кстати, а какой из языков есть "классическая динамика"?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[29]: MIT переходи со схемы на...
От: PhantomIvan  
Дата: 27.11.06 06:14
Оценка:
MS>Другое решение, вполне нормальное IMO — выдавать некоторым специальные индульгенции, которые будут означать что-то типа "Данному участнику в силу его убогости разрешается пользоваться подонковской лексикой. Он делает это не со зла, а по незнанию и заранее просит его извинить".

ага, можно мне такую индульгенцию?
а ещё смайлик такой — типа с бородой и с палочкой? (инвалид умственного труда)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.