Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: Скорость Добавлено: 11.06.04 04:59  

Автор вопроса:  Павел | Web-сайт: www.vbnet.ru | ICQ: 326066673 
Интересная тема о сабже:
http://www.gotdotnet.ru/Forums/CommonForum/48736.aspx

Ответить

  Ответы Всего ответов: 22  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 11.06.04 05:54
Сорри, тест

Ответить

Номер ответа: 2
Автор ответа:
 Djoni



Вопросов: 6
Ответов: 35
 Профиль | | #2 Добавлено: 11.06.04 11:22

кстати получается в билдере быстрее С код выполнится

int main()

{long long x,y=0;

 

for (x=0; x<= 10000000000; x++)

y++;

 

return 0;

}

такой цикл в билдере 84 сек в VC  94

VC ассемблер код:

for (x=0; x<= 10000000000; x++)

00411A2C  mov         dword ptr [x],0

00411A33  mov         dword ptr [ebp-8],0

00411A3A  jmp         main+4Eh (411A4Eh)

00411A3C  mov         eax,dword ptr [x]

00411A3F  add         eax,1

00411A42  mov         ecx,dword ptr [ebp-8]

00411A45  adc         ecx,0

00411A48  mov         dword ptr [x],eax

00411A4B  mov         dword ptr [ebp-8],ecx

00411A4E  cmp         dword ptr [ebp-8],2

00411A52  jg          main+73h (411A73h)

00411A54  jl          main+5Fh (411A5Fh)

00411A56  cmp         dword ptr [x],540BE400h

00411A5D  ja          main+73h (411A73h)

y++;

00411A5F  mov         eax,dword ptr [y]

00411A62  add         eax,1

00411A65  mov         ecx,dword ptr [ebp-18h]

00411A68  adc         ecx,0

00411A6B  mov         dword ptr [y],eax

00411A6E  mov         dword ptr [ebp-18h],ecx

00411A71  jmp         main+3Ch (411A3Ch)

 

из билдера не могу сохранить код

 

т.е. я хочу сказать многое зависит от компилятора, один и тот же код С выполняется быстрее на 12%

 

 

Ответить

Номер ответа: 3
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #3
Добавлено: 12.06.04 00:16
 Люди, всё это брехня. Помните мы проводили тесты на скорость? Я делал на PB и VB. Кто то на Си++ и VB.NET.
 Так вот, у того кто делал тест на Си, скорость цикла была 3 раза быстрее чем в машинных кодах. Это либо нонсенс, либо брехня.


А сейчас я вам покажу как обманывать почтеннейшую публику.

Цикл от 1 до 2 млрд (ПБ). (8 секунд)
C7C601943577 mov esi, 77359401
FFCE dec esi
75FC jne 004010E9

Тоже самое (PB Инлайне АСМ). (13 секунд)
BE01943577 mov esi, 77359401
4E dec esi
0F85F9FFFFFF jne 0040111F

Прикольно не правда ли. Игра называется найди 5 отличий. Я то знаю почему быстрее. Попробуйте и вы догадаться. Я потом расскажу в чём прикол. После того как наши асемблерщики выскажут своё мнение.

Ответить

Номер ответа: 4
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #4
Добавлено: 12.06.04 00:20
 Посмотрите какой громадный листнг на Cи, и какой маленький на PB. А "спецы" тут доказывают чуть ли не 4-х кратную разницу. Посмотри, твой код делает цикл через память. Это занимает время. Самый быстрый цикл - через регистры.

Ответить

Номер ответа: 5
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #5
Добавлено: 13.06.04 13:34
 Хотя я тоже ошибался.
Посмотрите
 http://www.masmforum.com/viewtopic.php?p=22768#22768

Ответить

Номер ответа: 6
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #6
Добавлено: 16.06.04 12:20
Судя по VCшному листингу, оптимизация была выключена. Мне лень проверять, но код должен быть заметно быстрее, уже хотя бы потому, что так как x не используется внутри цикла, VC юзает его через регистр. А Intel C++ Compiler, афаик, вообще выбрасывает такие циклы нафиг, заменяя на y=10000000000; x=10000000000;
Сравнивать время исполнения под Виндой, имхо, бессмысленно, лучше сравнивать машинный код. Однако Intel тоже не по деццки читерят, смотрите например здесь: http://www.fds-net.ru/forum/index.php?showtopic=17570&st=0

Ответить

Номер ответа: 7
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #7
Добавлено: 17.06.04 21:28
 Скорость выполнения той или иной команды ещё зависит от того использует она кэш или нет.

Ответить

Номер ответа: 8
Автор ответа:
 Djoni



Вопросов: 6
Ответов: 35
 Профиль | | #8 Добавлено: 18.06.04 09:13
прально, т.к. скорость обращения естественно к кешу меньше. Только насколько я понимаю вероятность обращения к кешу тем выше, чем чаще идет повтор команд и данных.
Т.к. я пишу проги для микроконтроллеров, то для меня это воообще актуальная и тема, скорость выполнения кода.

Ответить

Номер ответа: 9
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #9
Добавлено: 18.06.04 10:09
 Ну да, если нужна скорость в повторяющихся операциях, то смотришь по таблицам какая из инструкций поддерживает кэш и как интенсивно его использует. Ну да ты, я вижу, в этом больше моего разбираешся. Приведи тогда парочку примеров как ты использовал кешированные команды. Или там архитектура совсем разная?

Ответить

Номер ответа: 10
Автор ответа:
 Djoni



Вопросов: 6
Ответов: 35
 Профиль | | #10 Добавлено: 18.06.04 10:57
Насколько я понимаю все команды и данные попадают в кеш L1 и L2, т.е. нет разницы в командах и потом "задвигание" в кеш осуществляется программно, т.е. не от программиста(по этому просто не существует листинга для быстрой обработки команд), но если команды повторяются настолько часто, что не вылезают за границы кеша, то команда выполняется быстрее, т.к. естественно задержки при работе с кешем намного меньше, чем с памятью.

Ответить

Номер ответа: 11
Автор ответа:
 Djoni



Вопросов: 6
Ответов: 35
 Профиль | | #11 Добавлено: 18.06.04 11:04
На счет скорости выполнения кода я имел ввиду "быстрые алгоритмы" и "вылизование" кода т.к. контроллеры имеют ограничения по скорости

Ответить

Номер ответа: 12
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #12
Добавлено: 18.06.04 11:20
Я имел ввиду что то типа этого

¦ Команда Формат ¦ В ¦Вне ¦Прим. ¦
¦ ¦кэше ¦кэша ¦ ¦
+---------------------------------------------------+-----+-----+-------+
¦ЦЕЛОЧИСЛЕННЫЕ ¦ ¦ ¦ ¦
¦КОМАНДЫ ¦ ¦ ¦ ¦
¦MOV Пересылка: ¦ ¦ ¦ ¦
¦ -----------T------------¬ ¦ ¦ ¦ ¦
¦ регистр1 - ¦ 1000100W ¦11 reg1 reg2¦ ¦ 1 ¦ ¦ ¦
¦ регистр2 L----------+------------- ¦ ¦ ¦ ¦
¦ -----------T------------¬ ¦ ¦ ¦ ¦
¦ регистр2 - ¦ 1000101w ¦11 reg1 reg2¦ ¦ 1 ¦ ¦ ¦
¦ регистр1 L----------+------------- ¦ ¦ ¦ ¦
¦ -----------T------------¬ ¦ ¦ ¦ ¦
¦ память - ¦ 1000101w ¦mod reg r/m ¦ ¦ 1 ¦ 2 ¦ ¦
¦ регистр L----------+------------- ¦ ¦ ¦ ¦
¦ -----------T------------¬ ¦ ¦ ¦ ¦
¦ регистр - ¦ 1000100w ¦mod reg r/m ¦ ¦ 1 ¦ ¦ ¦
¦ память L----------+------------- ¦ ¦ ¦ ¦
¦ -----------T------------¬Непосредст- ¦ ¦ ¦ ¦
¦ константа - ¦ 1100011w ¦11000 reg ¦ венные ¦ 1 ¦ ¦ ¦
¦ регистр L----------+------------- данные ¦ ¦ ¦ ¦
¦ или ¦ ¦ ¦ ¦
¦ -----------¬ Непосредственные ¦ ¦ ¦ ¦
¦ ¦ 1011w reg¦ данные ¦ 1 ¦ ¦ ¦
¦ L----------- ¦ ¦ ¦ ¦
¦ -----------T------------¬Непосредст- ¦ ¦ ¦ ¦
¦ константа - ¦ 1100011w ¦mod 000 r/m ¦ венные ¦ 1 ¦ ¦ ¦
¦ память L----------+------------- данные ¦ ¦ ¦ ¦
¦ -----------¬ ¦ ¦ ¦ ¦
¦ память - ¦ 1010000w ¦ Полное смещение ¦ 1 ¦ ¦ ¦
¦ сумматор (AX)L----------- ¦ ¦ ¦ ¦
¦ -----------¬ ¦ ¦ ¦ ¦
¦ сумматор (AX)¦ 1010001w ¦ Полное смещение ¦ 1 ¦ 2 ¦ ¦
¦ - память L----------- ¦ ¦ ¦ ¦
L---------------------------------------------------+-----+-----+--------
----------------------------------------------------T-----T-----T-------¬
¦ Команда Формат ¦ В ¦Вне ¦Прим. ¦
¦ ¦кэше ¦кэше ¦ ¦
+---------------------------------------------------+-----+-----+-------+
¦MUL = Умножение (без знака) ¦ ¦ ¦ ¦
¦ -----------T------------¬ ¦ ¦ ¦ ¦
¦сумматор (AX) ¦ 1111011w ¦ 11 100 reg ¦ ¦ ¦ ¦ ¦
¦регистр L----------+------------- ¦ ¦ ¦ ¦
¦ Сомножитель-Байт ¦13/18¦ ¦MN/MX,3¦
¦ -Слово ¦13/26¦ ¦MN/MX,3¦
¦ -Двойное слово ¦13/42¦ ¦MN/MX,3¦
¦ -----------T------------¬ ¦ ¦ ¦ ¦
¦сумматор (AX) ¦ 1111011w ¦mod 100 r/m ¦ ¦ ¦ ¦ ¦
¦память L----------+------------- ¦ ¦ ¦ ¦
¦ Сомножитель-Байт ¦13/18¦ 1 ¦MN/MX,3¦
¦ -Слово ¦13/26¦ 1 ¦MN/MX,3¦
¦ -Двойное слово ¦13/42¦ 1 ¦MN/MX,3¦
¦ ¦ ¦ ¦ ¦
¦IMUL = Целочисленное умножение (со знаком) ¦ ¦ ¦ ¦
¦ -----------T------------¬ ¦ ¦ ¦ ¦
¦сумматор (AX) ¦ 1111011w ¦ 11 101 reg ¦ ¦ ¦ ¦ ¦
¦регистр L----------+------------- ¦ ¦ ¦ ¦
¦ Сомножитель-Байт ¦13/18¦ ¦MN/MX,3¦
¦ -Слово ¦13/26¦ ¦MN/MX,3¦
¦ -Двойное слово ¦13/42¦ ¦MN/MX,3¦
¦ -----------T------------¬ ¦ ¦ ¦ ¦
¦сумматор (AX) ¦ 1111011w ¦mod 101 r/m ¦ ¦ ¦ ¦ ¦
¦память L----------+------------- ¦ ¦ ¦ ¦
¦ Сомножитель-Байт ¦13/18¦ ¦MN/MX,3¦
¦ -Слово ¦13/26¦ ¦MN/MX,3¦
¦ -Двойное слово ¦13/42¦ ¦MN/MX,3¦
¦ -----------T----------T-------------¬¦ ¦ ¦ ¦
¦регистр1 ¦ 00001111 ¦ 10101111 ¦11 reg1 reg2 ¦¦ ¦ ¦ ¦
¦регистр2 L----------+----------+--------------¦ ¦ ¦ ¦
¦ Сомножитель-Байт ¦13/18¦ ¦MN/MX,3¦
¦ -Слово ¦13/26¦ ¦MN/MX,3¦
¦ -Двойное слово ¦13/42¦ ¦MN/MX,3¦

Ответить

Номер ответа: 13
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #13
Добавлено: 18.06.04 11:20
Съехало, хрен с ним.

Ответить

Номер ответа: 14
Автор ответа:
 Djoni



Вопросов: 6
Ответов: 35
 Профиль | | #14 Добавлено: 18.06.04 11:27
честно говоря я не особо понял :)
не могу правильно прочесть это инструкции ты что ли написал???

Ответить

Номер ответа: 15
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #15
Добавлено: 18.06.04 13:07
 Текст просто для ДОС-а. Вот его и перекосило

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам