Добрый день, уважаемые!
Недавно для интереса решили проверить скорострельность C# по сравнению с С++. Результаты оказались вполне ожидаемые, а вот когда попробовали сравнить C# с Delphi, очень даже удивились . С# оказался значительно быстрее.
Проверяли на простеньком примере вычислений с плавающей точкой.
Что скажите?
Здравствуйте, OdinDoma, Вы писали:
OD>Добрый день, уважаемые! OD>Недавно для интереса решили проверить скорострельность C# по сравнению с С++. Результаты оказались вполне ожидаемые, а вот когда попробовали сравнить C# с Delphi, очень даже удивились . С# оказался значительно быстрее. OD>Проверяли на простеньком примере вычислений с плавающей точкой. OD>Что скажите?
Тоже ожидаемый результат. Ты дизасемблируй дельфячий код и глянь в него — сразу все ясно станет.
Нафиг, нафиг, нафиг...
что шарп, что дельфи, когда нынче столько всего хорошего есть
хочешь пошустрее можно OCaml взять, хочешь попроще — Python
Здравствуйте, OdinDoma, Вы писали:
OD>Добрый день, уважаемые! OD>Недавно для интереса решили проверить скорострельность C# по сравнению с С++. Результаты оказались вполне ожидаемые, а вот когда попробовали сравнить C# с Delphi, очень даже удивились . С# оказался значительно быстрее. OD>Проверяли на простеньком примере вычислений с плавающей точкой. OD>Что скажите?
Не вижу смысла сравнивать г... с д...
Отупляют они. И хотя шарп еще вроде как держится (ассемблей еще ненаделали столько сколько компеонентов у делфей) то делфи отупляет сострашной силой.
[RSDN@Home][1.1.4][beta 7][501]
[Winamp is shutdown.]
<...>
S>Не вижу смысла сравнивать г... с д... S>Отупляют они. И хотя шарп еще вроде как держится (ассемблей еще ненаделали столько сколько компеонентов у делфей) то делфи отупляет сострашной силой.
Ну если считать отуплением потерю навыка в решении головоломных выражений с указателями — то да — отупляет.
Здравствуйте, OdinDoma, Вы писали:
...
Зачем сравнивать с Delphi? Чтобы потом ругать?
В документации к Delphi указано, что ее не рекомендуется использовать для математических расчетов, где требуется высокая производительность.
Здравствуйте, ZevS, Вы писали:
ZS>Ну если считать отуплением потерю навыка в решении головоломных выражений с указателями — то да — отупляет.
А мне например тяжко без указателей.
[RSDN@Home][1.1.4][beta 7][501]
[Winamp is shutdown.]
Здравствуйте, Sheridan, Вы писали:
S>Здравствуйте, ZevS, Вы писали:
ZS>>Ну если считать отуплением потерю навыка в решении головоломных выражений с указателями — то да — отупляет. S>А мне например тяжко без указателей.
Ну так это ж программирование, а не вышивание. Тяжелый труд для суровых людей — придется сжать челючти и терпетеь.
Здравствуйте, OdinDoma, Вы писали:
OD>Добрый день, уважаемые! OD>Недавно для интереса решили проверить скорострельность C# по сравнению с С++. Результаты оказались вполне ожидаемые, а вот когда попробовали сравнить C# с Delphi, очень даже удивились . С# оказался значительно быстрее. OD>Проверяли на простеньком примере вычислений с плавающей точкой. OD>Что скажите?
Скажу, что баян.
new RSDN@Home(1.1.4, 303) << new Message(); std::head::ear << "Metallica — Enter Sandman";
Здравствуйте, ansi, Вы писали:
A>Здравствуйте, OdinDoma, Вы писали:
OD>>Добрый день, уважаемые! OD>>Недавно для интереса решили проверить скорострельность C# по сравнению с С++. Результаты оказались вполне ожидаемые, а вот когда попробовали сравнить C# с Delphi, очень даже удивились . С# оказался значительно быстрее. OD>>Проверяли на простеньком примере вычислений с плавающей точкой. OD>>Что скажите?
A>Скажу, что баян.
Да нет не баян. Только, смотри выделенное, не совсем верно.
Здравствуйте, vlad_gri, Вы писали:
_>Да нет не баян. Только, смотри выделенное, не совсем верно.
Почему же неверно. Процентов на 10-20 Delphi медленнее оказался.
Если посмотреть в Asm, то после каждой операции с плавающей точкой Delphi wait навставлял. В Майкрософтовском коде waitов вообще нет.
Здравствуйте, OdinDoma, Вы писали:
OD>Здравствуйте, vlad_gri, Вы писали:
_>>Да нет не баян. Только, смотри выделенное, не совсем верно.
OD>Почему же неверно. Процентов на 10-20 Delphi медленнее оказался. OD>Если посмотреть в Asm, то после каждой операции с плавающей точкой Delphi wait навставлял. В Майкрософтовском коде waitов вообще нет.
Приведи свой тест для проверки.
У меня разница 1-5 процентов
Насчет fwait твоя правда, отьедает гад 4 такта процессора, оставлен якобы для совместимости с i486
Но давай проведем тесты на Pentium.
Если кто-либо скажет, что таких процессоров уже не существует, милости прошу из 80 компов 8 они и есть.
Здравствуйте, vlad_gri, Вы писали:
_>Приведи свой тест для проверки. _>У меня разница 1-5 процентов _>Насчет fwait твоя правда, отьедает гад 4 такта процессора, оставлен якобы для совместимости с i486 _>Но давай проведем тесты на Pentium. _>Если кто-либо скажет, что таких процессоров уже не существует, милости прошу из 80 компов 8 они и есть.
Насчет 20% я действительно загнул. На моем примере до 7 получилось.
Пример, самый, что ни на есть примитивный, поэтому ни факт, что он показательный.
double d=0;
int t=Environment.TickCount;
for (int i=1;i<=50000000;i++)
{
d=d+Math.Sqrt(i);
if (d>100000)
d=d/2;
}
int g=Environment.TickCount;
Console.WriteLine(g-t);
Console.WriteLine(d);
С++ — 4015 мс
С# — 4672 мс
Delphi — от 4890 до 5046 мс (нестабильно)
Интересно было бы APIшными вызовами разбавить, да и расчеты посложнее.
Здравствуйте, OdinDoma, Вы писали:
OD>Насчет 20% я действительно загнул. На моем примере до 7 получилось. OD>Пример, самый, что ни на есть примитивный, поэтому ни факт, что он показательный. OD> double d=0; OD> int t=Environment.TickCount; OD> for (int i=1;i<=50000000;i++) OD> { OD> d=d+Math.Sqrt(i); OD> if (d>100000) OD> d=d/2; OD> } OD> int g=Environment.TickCount; OD> Console.WriteLine(g-t); OD> Console.WriteLine(d); OD>С++ — 4015 мс OD>С# — 4672 мс OD>Delphi — от 4890 до 5046 мс (нестабильно)
OD>Интересно было бы APIшными вызовами разбавить, да и расчеты посложнее.
Нашел интересную фишку.
У Microsoft в С++ и C# в 8087CW стоит PrecissionMode=DOUBLE а
у Borland в 8087CW стоит PrecissionMode=EXTENDED.
Попробуй протестировать Delphi с установленным PrecissionMode=DOUBLE, мне интересно ,что получиться.
Здравствуйте, vlad_gri, Вы писали:
_>Здравствуйте, OdinDoma, Вы писали:
OD>>Интересно было бы APIшными вызовами разбавить, да и расчеты посложнее.
_>Мои тесты. _>http://rsdn.ru/File/41945/floatTest.rar
Успел только запустить exe-шники.
Все почти одинаково (c Double Precission), но C# чуть-чуть обогнал.
Завтра еще посмотрю
Здравствуйте, Sheridan, Вы писали:
S>Здравствуйте, ZevS, Вы писали:
ZS>>Ну если считать отуплением потерю навыка в решении головоломных выражений с указателями — то да — отупляет. S>А мне например тяжко без указателей.
Ну если хватает тупости не использовать указатели в Delphi, когда они нужны, то это не проблема языка Delphi.
Здравствуйте, vlad_gri, Вы писали:
_>Нашел интересную фишку. _>У Microsoft в С++ и C# в 8087CW стоит PrecissionMode=DOUBLE а _>у Borland в 8087CW стоит PrecissionMode=EXTENDED. _>Попробуй протестировать Delphi с установленным PrecissionMode=DOUBLE, мне интересно ,что получиться.
Не должно влиять на скорость. AFAIK сопроцессор работает всегда с десятибайтовым представлением.