Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2013, 23:03   #11
Alchemic
Пользователь
 
Регистрация: 16.02.2013
Сообщений: 53
По умолчанию

Stilet, Вы ещё со вставкой произвольного количества нопов перед циклами поизвращайтесь и посмотрите, как от этого количество тиков меняться будет. Смысл - в выравнивании линий кэша.
Alchemic вне форума Ответить с цитированием
Старый 16.02.2013, 23:15   #12
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Код:
с обычными настройками компилятора по принципу "Поставил и не лазил в настройках"
Точно не знаю, но не думаю, что уровень оптимизации JIT компилятора С# зависит от настроек VS, в отличие от C++.
Так что вопрос к winhttp: в каких условиях сравнивать?
Цитата:
Смысл - в выравнивании линий кэша.
При чём тут ещё линии кеша? Тут же никаких структур данных нет, только несколько переменных.
Somebody вне форума Ответить с цитированием
Старый 16.02.2013, 23:17   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Alchemic
Да не. Это я так. Для галочки попробовал.
ИМХО нужно те приведенные выше коды посмотреть в дизассемблере. Тогда будет понятнее.
Цитата:
не думаю, что уровень оптимизации JIT компилятора С# зависит от настроек VS, в отличие от C++.
Ну мне, как конечному потребителю в целом скорее всего будет казаться что шарп круче плюсов
Хотя не спорю - с какой оптимизацией компилировалось нигде не уточняется.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.02.2013, 23:23   #14
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Что касается ассемблерного кода, там не надо finit в цикле (fstp st для выталкивания результата) и надо fild, а не fld. У меня после этого в 6 (!) раз быстрее стало.
Код:
ИМХО нужно те приведенные выше коды посмотреть в дизассемблере.
+1
Somebody вне форума Ответить с цитированием
Старый 16.02.2013, 23:25   #15
Alchemic
Пользователь
 
Регистрация: 16.02.2013
Сообщений: 53
По умолчанию

Вот тоже статья на эту тему:
http://www.gotdotnet.ru/blogs/gsaf/2872/
Alchemic вне форума Ответить с цитированием
Старый 16.02.2013, 23:34   #16
Alchemic
Пользователь
 
Регистрация: 16.02.2013
Сообщений: 53
По умолчанию

Цитата:
При чём тут ещё линии кеша? Тут же никаких структур данных нет, только несколько переменных.
Я имел в виду ни кэш данных, а кэш команд. Я как то экспериментировал с нопами, изменяя положение кода циклов. Очень серьёзные изменения скорости наблюдал.
Alchemic вне форума Ответить с цитированием
Старый 16.02.2013, 23:40   #17
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

в С# не силен, но могу предположить, что Math.sin не использует FPU и в ущерб точности делает полиномиальный фит по табличным значениям. Думаю, что если для С++ разрешить использование SSE в настройках компилятора, то цифры немного изменятся.
f.hump вне форума Ответить с цитированием
Старый 17.02.2013, 00:07   #18
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

http://ideone.com/LN6a2t
время: 0.16s
Haskell быстрее чем C++ и C# вместе взятые?

Это всё к тому, что один язык не может быть быстрее другого, это же языки, всё равно, что говорить, что русский быстрее английского. Разницу в производительности дают реализации (компиляторы, интерпретаторы) и прямые руки программиста.
netrino вне форума Ответить с цитированием
Старый 17.02.2013, 11:12   #19
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

На моей машине такие результаты для вышеприведенного кода:

Цитата:
$ time -p ./C#_test.exe
15,7720515983152
real 4.29
user 4.28
sys 0.00

$ time -p ./D_test
15.7721
real 4.38
user 4.37
sys 0.00

$ time -p ./test_c++
15.7721
real 4.60
user 4.59
sys 0.00

$ time -p ./haskell_test
15.77205159826374
real 0.10
user 0.10
sys 0.00
Использовал:

MonoDevelop 3.0.3.2
gdc 4.6.3
gcc версия 4.7.2
GHC version 7.4.2

Проц Intel(R) Core(TM) i7-2630QM CPU @ 2.00GHz

Правда с Хаскелем сравнивать не честно, он все заранее посчитал =)
Kostia вне форума Ответить с цитированием
Старый 17.02.2013, 23:05   #20
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Kostia Посмотреть сообщение
Правда с Хаскелем сравнивать не честно, он все заранее посчитал =)
Не совсем так, можно сделать, чтобы кол-во итераций вводилось с консоли, скорость не изменится. Да и тогда бы он компилировал доолго, чтобы всё посчитать, а у меня компиляция занимает пару секунд. Скорее всего компилятор понял, что значение внутреннего foldl' будет всегда одно и то же, и посчитал его только один раз, после чего 100 раз сложил это число само с собой внешним foldl'. Это возможно за счёт гарантии чистоты функций и неизменяемости контекста.
netrino вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в чем ошибка ?? SuperHuman Общие вопросы C/C++ 3 04.06.2012 21:30
Почему Excel 2010 выполняет поиск гораздо медленнее чем Excel 2003 Sprat Microsoft Office Excel 1 25.10.2011 05:34
Во общем надо написать программу "дождь"...и чтоб некоторые капельки двигались быстрее, другие медленнее. zzz6 Помощь студентам 6 07.07.2011 10:57
В Excel 2010 макрос медленнее в 3 раза чем в 2007 Владимир. Microsoft Office Excel 12 22.05.2010 18:24
В чем ошибка? delphyok Паскаль, Turbo Pascal, PascalABC.NET 6 24.02.2009 23:33