![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
ASM-вставка на Delphi XE5. Есть 2 варианта кода:
#1 Код:
Код:
Подскажите, почему так происходит? |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 12.05.2011
Сообщений: 58
|
![]()
А замерам производительности можно доверять? Без тестирования, рассуждая только теоретически, я бы тоже высказался в пользу #1.
P. S. Еще вспомнилось, что команда XCHG использует какую-то дополнительную блокировку, вроде бы даже аппаратную, дабы между чтением из памяти и записью в память никто не встрял. Возможно, в этом дело? |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Там при регистр-память тактов не меньше 15 или 18 (точно не помню)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#4 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
Не знаю. Наверное. Меня профессионалом в программировании только этот форум и считает (люблю его за это
![]() Код:
Цитата:
|
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#6 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
Так стек же - это тоже память
![]() Даже эта хрень работает быстрее Код:
Цитата:
Последний раз редактировалось Sibedir; 05.06.2015 в 13:07. |
|
![]() |
![]() |
![]() |
#7 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,844
|
![]()
Для ассемблерных тестов у GetTickCount слишком маленькое разрешение. Только QueryPerformanceCounter, только хардкор!
Блокировку. Ссылка где-то в доке Intel или AMD, видимо. Даже если второй вариант и с QueryPerformanceCounter будет быстрее, на деле две ассемблерные вставки делают разное (с точки зрения ассемблера): c XCHG -- более-менее согласованный обмен, а с двумя MOV -- ничего не гарантирующий, пригодный только для однопоточных программ.
В разработке: воспроизводственный контур ИТ
|
![]() |
![]() |
![]() |
#8 | ||
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]() Цитата:
Цитата:
Последний раз редактировалось Sibedir; 05.06.2015 в 13:22. |
||
![]() |
![]() |
![]() |
#9 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
![]()
в мануале ж все есть.
при работе с памятью на многоядерном проце, XCHG влючает внуренний механизм синхронизации, который обеспечивает ядру, на котором произошел XCHG экслюзивный доступ к требуемой области памяти. ну, как известно, любая операция требующая синхронизации - это безбожно медленная операция. зы. можешь еще с MOVNTI [eax], ebx сравнить. Последний раз редактировалось f.hump; 05.06.2015 в 14:50. |
![]() |
![]() |
![]() |
#10 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
Ага, есть
![]() А вот здесь x86 Instructions, как это ни странно, об это ни слова. Вотжиш люди. Цитата:
![]() Последний раз редактировалось Sibedir; 06.06.2015 в 12:28. |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание игры - взгляд изнутри (дневник разработки и учебное пособие) | Гром | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 97 | 15.01.2017 14:31 |
5 колонна разрушит Россию изнутри | challengerr | Свободное общение | 22 | 11.06.2014 13:48 |
дельфи изнутри. | ромик0 | Помощь студентам | 8 | 16.01.2012 13:36 |
статья - Может-ли ПО работать быстрее или взгляд изнутри | Pblog | Обсуждение статей | 0 | 27.02.2011 23:10 |
[Вопросы]Работа с процессами. Процессы изнутри | Человек_Борща | Общие вопросы Delphi | 2 | 03.04.2010 18:37 |