Re[10]: 32 bit
От: Философ Ад http://vk.com/id10256428
Дата: 14.03.23 21:20
Оценка:
Здравствуйте, TailWind, Вы писали:

TW>Класс!

TW>Ну и кто это может объяснить?

Я могу: плюсовики, похоже, тоже
Автор: Философ
Дата: 15.03.23
не настоящие.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[10]: 32 bit
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 14.03.23 21:26
Оценка:
Здравствуйте, TailWind, Вы писали:

TW>Почему 32-бит на 64 медленней?


Он не медленнее, одинаково оно. Вся простая арифметика в пределах слова выполняется за один такт.

TW>Может паскалевские замарочки?


Скорее всего. В сях при таких тестах тоже надо следить, чтоб шибко умный компилятор не наоптимизировал. Даже древний VC++ конца 90-х много чего умеет.
Re[8]: 32 bit
От: rudzuk  
Дата: 14.03.23 21:27
Оценка:
Здравствуйте, Философ, Вы писали:

Ф> Понятно Наши паскалисты не настоящие.

Ф> Не настоящие!

Не пойму, что ты сказать хотел
avalon/3.0.2
Re[6]: 32 bit
От: Aquilaware  
Дата: 14.03.23 21:29
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>У меня, если что, еще ни один бинарник даже за 300 не перевалил


Это, кстати, интересная тема. Надо бы замутить опрос по размеру выходных артефактов разрабатываемого ПО. У нас это мегабайты — десятки мегабайт. Меньше не получается, иначе полный функционал продукта невозможно реализовать.
Re[11]: 32 bit
От: rudzuk  
Дата: 14.03.23 21:29
Оценка: :))
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ> TW>Может паскалевские замарочки?


ЕМ> Скорее всего. В сях при таких тестах тоже надо следить, чтоб шибко умный компилятор не наоптимизировал. Даже древний VC++ конца 90-х много чего умеет.


Я попробовал этот тест собрать паскалем с llvm, так он вообще весь код выкинул за ненадобностью
avalon/3.0.2
Re[8]: 32 bit
От: Aquilaware  
Дата: 14.03.23 21:33
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Вы твердо уверены, что из нас двоих психотерапия нужна именно мне?


Я тоже вижу в вашем поведении такие же странности как и коллега. У вас такая уверенность в вашей исключительности, что вам просто необходимо преобразовать этот напор нарцисизма и эгоизма в деньги, вместо того чтобы воевать с ветрянными мельницами на страницах форума.
Re[12]: 32 bit
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 14.03.23 21:39
Оценка: +1
Здравствуйте, rudzuk, Вы писали:

R>Я попробовал этот тест собрать паскалем с llvm, так он вообще весь код выкинул за ненадобностью


Вот и в сишном приходится добавлять код использования тестовых массивов, а результат передавать куда-нибудь наружу, иначе тоже выкидывает. А если по массиву проходить в цикле, эта гадина еще и инварианты находит и выносит из цикла.
Re[9]: 32 bit
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 14.03.23 21:42
Оценка:
Здравствуйте, Aquilaware, Вы писали:

A>У вас такая уверенность в вашей исключительности


Определенная исключительность наличествует во многих. Но таки интересно, из чего именно Вы делаете такой вывод?

A>вам просто необходимо преобразовать этот напор нарцисизма и эгоизма в деньги


В смысле — стать блогером-миллионником?
Re[9]: 32 bit
От: Философ Ад http://vk.com/id10256428
Дата: 14.03.23 21:54
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Здравствуйте, Философ, Вы писали:


Ф>> Понятно Наши паскалисты не настоящие.

Ф>> Не настоящие!

R>Не пойму, что ты сказать хотел


Такой код меряют не в милисекундах. Даже во времена Pentium 4 для этого использовался HPET иначе ничего хорошего не намеряешь. Некоторые по привычке использовали RTDSC. А ещё раньше использовали только RDTSC. В крайнем случае люди использовали Multimedia timers.


Позор это потому, что ты что-то намерял, удивился полученным результатам и понёс на форум. Даже не подумал о том, что у тебя результаты прям сильно-сильно другие. Это ошибка десятиклассника, который в физической задаче ошибся на пять порядков, не придал этому значения и записал в ответ.

У вас в паскале есть вот такая обёртка https://wiki.freepascal.org/EpikTimer/ru
Почти во всех языках в стандартных библиотеках такое обычно есть из коробки — профилирование кода слишком распространённая задача.

Там внутри вот это используется.
Всё сказанное выше — личное мнение, если не указано обратное.
Отредактировано 14.03.2023 21:59 Философ . Предыдущая версия .
Re[10]: 32 bit
От: rudzuk  
Дата: 14.03.23 22:20
Оценка:
Здравствуйте, Философ, Вы писали:

Ф> Такой код меряют не в милисекундах. Даже во времена Pentium 4 для этого использовался HPET иначе ничего хорошего не намеряешь. Некоторые по привычке использовали RTDSC. А ещё раньше использовали только RDTSC. В крайнем случае люди использовали Multimedia timers.


Ф> Позор это потому, что ты что-то намерял, удивился полученным результатам и понёс на форум. Даже не подумал о том, что у тебя результаты прям сильно-сильно другие. Это ошибка десятиклассника, который в физической задаче ошибся на пять порядков, не придал этому значения и записал в ответ.


Именно из-за миллисекунд я и увеличил количество итераций. Это первое. Второе. Это не задача профилирования кода, где нужно количество тактов ловить.

Ф> У вас в паскале есть вот такая обёртка https://wiki.freepascal.org/EpikTimer/ru

Ф> Почти во всех языках в стандартных библиотеках такое обычно есть из коробки — профилирование кода слишком распространённая задача.

Ф> Там внутри вот это используется.


Что есть у нас в паскале я знаю. Код написан именно так, чтобы любой мог его собрать без установки подополнительных пакетов.
avalon/3.0.2
Re[11]: 32 bit
От: Философ Ад http://vk.com/id10256428
Дата: 14.03.23 22:25
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Именно из-за миллисекунд я и увеличил количество итераций. Это первое. Второе. Это не задача профилирования кода, где нужно количество тактов ловить.


Ага, я видел. Только при этом ты на полном серьёзе утверждаешь, что этот наш .net не настоящий. Да-да, медленный слишком.

R>Что есть у нас в паскале я знаю. Код написан именно так, чтобы любой мог его собрать без установки подополнительных пакетов.


В таких случаях самостоятельно дергают QPC. Некоторые извращенцы при этом даже из .net дёргают RDTSC, например вот здесь Сидиристый поступил именно так.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[12]: 32 bit
От: rudzuk  
Дата: 14.03.23 22:47
Оценка: +1
Здравствуйте, Философ, Вы писали:

Ф> Ага, я видел. Только при этом ты на полном серьёзе утверждаешь, что этот наш .net не настоящий. Да-да, медленный слишком.


А ты сам не видишь дичь в результатах своих замеров? 64-битный код с треском сливает 32-битному, работая в родном для себя режиме. И это объясняется тем, что процессор, оказывается, не так прост. фасепальм.

Ф> R>Что есть у нас в паскале я знаю. Код написан именно так, чтобы любой мог его собрать без установки подополнительных пакетов.


Ф> В таких случаях самостоятельно дергают QPC. Некоторые извращенцы при этом даже из .net дёргают RDTSC, например вот здесь Сидиристый поступил именно так.


Как я уже говорил, смысла в этом не много Задачи ловить такты нет. Вот смотри, специально для тебя:

const
  Iterations = 10 * 1000 * 1000;

function GetTickCount : Int64;
begin
  if not QueryPerformanceCounter(@Result) then
    System.Error(reAssertionFailed);
end;


Результат:


Ну, сильно изменился общий результат?
avalon/3.0.2
Re[13]: 32 bit
От: rudzuk  
Дата: 14.03.23 23:36
Оценка:
Здравствуйте, rudzuk, Вы писали:

r> А ты сам не видишь дичь в результатах своих замеров? 64-битный код с треском сливает 32-битному, работая в родном для себя режиме. И это объясняется тем, что процессор, оказывается, не так прост. фасепальм.


Решил запустить твой код у себя:

FW 4.0.30319 (ключи /unsafe /platform:x86|x64 /o /checked-)



Так что да, ты прав — твой процессор не так прост
avalon/3.0.2
Re[10]: 32 bit
От: Aquilaware  
Дата: 14.03.23 23:57
Оценка: :))
Здравствуйте, Евгений Музыченко, Вы писали:

A>>У вас такая уверенность в вашей исключительности

ЕМ>Определенная исключительность наличествует во многих. Но таки интересно, из чего именно Вы делаете такой вывод?

Потому что вы не умеете входить в ситуации окружающих людей (эгоизм). Например, если вам достаточно 300 Кб для программы, вы делаете вывод что всему миру этого обьема тоже достаточно и начинаете методично разьяснять почему это так и никак иначе для всех и на все времена (контрпродуктивный нигилизм с элементами нарцисизма). Такие дисскуссии даже продолжать не хочеться, потому что они говорят как минимум об элементах незрелости и недальновидности. При этом изначально тема дискуссии была про применимость 64 битных архитектур, но после ваших сообщений происходит мастерский дерейлинг всей ветки. И это не первая и, скорее всего, не последняя тема, в которой всё развивается по одному и тому же патологическому сценарию резонёрства.

Не обижайтесь если я что-то не так написал. Вы спросили — я ответил. Надеюсь это информация для вас будет в конечном итоге полезна, даже если она вызовет разнонаправленные сиюминутные эмоции.
Re[14]: 32 bit
От: Философ Ад http://vk.com/id10256428
Дата: 15.03.23 02:11
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Image: Aqj7Hho.png

R>Так что да, ты прав — твой процессор не так прост

Что у тебя за проц? Я всё понять не могу, почему у тебя инкремент Int32 почти в 1.4 раза медленне чем у меня. Тем более, что мой i9 работает на частоте 3.9 — я ему обрезал частоты, чтобы меньше комнату обогревал. И почему такой разброс значений!?
Ты под дебаггером код запускаешь что-ли?
Всё сказанное выше — личное мнение, если не указано обратное.
Re[13]: 32 bit
От: Философ Ад http://vk.com/id10256428
Дата: 15.03.23 02:12
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>А ты сам не видишь дичь в результатах своих замеров? 64-битный код с треском сливает 32-битному, работая в родном для себя режиме. И это объясняется тем, что процессор, оказывается, не так прост. фасепальм.


Во-первых я заглядывал в дизасм, в то, что получилось после джиттера — там не было ничего экстраординарного. Во-вторых, я знаю что команды в современном x86 — это не инструкции. Сегодня x86 имеет RISC ядро, и сами команды декодирует в микрооперации, которые потом исполняте гипер-конвеер. Гипер-конвеерная архитектура появилаесь ещё в Pentium-4, а переупорядочивание команд в конвеере появилось ещё раньше аж в Pentium Pro, читать вот здесь.
Если ты посмотришь на модную штучку времён Core 2Duo ( Wide Dyanamic Execution) то увидишь там более 1 ALU.
В сочетании с переупорядочиванием инструкций (Out of order execution), то должен бы перестать удивлять тому, что частенько 2 команды выполняются дольше чем 5. Я этому удивляться перестал много лет назад, когда экспериментировал с командами процессора: у меня частенько rdtsc мерял 0 тактов на команду. Потом я открыл для себя fence-операции, в частности full-fence (примерно тогда уже узнал зачем нужен барьер памяти).

Понимаешь, нельзя сказать, сколько тактов займёт условный inc qword ptr [r15] и не получится его просто так сравнить с кодом аналогичного назначения для 32-бит. Поэтому и написать вручную оптимизированный ассемблерный код — совсем непростая задача.

R>Ну, сильно изменился общий результат?


Для начала расскажи как запускал. Есть серьёзное подозрение, что под дебаггером. На эту мысль наводят довольно большие цифры по сравнению с некоторыми моими. Например increment Int64 под x64 у меня более чем вдвое быстрее. Во-вторых, покажи что там компилятор паскали наоптимизировал.
  что произвёл джиттер
  как в WinDBG добраться до ассемблера (на примере x64)
0:000> !DumpDomain
--------------------------------------
System Domain:      00007ffd7b1da740
LowFrequencyHeap:   00007ffd7b1dacb8
HighFrequencyHeap:  00007ffd7b1dad48
StubHeap:           00007ffd7b1dadd8
Stage:              OPEN
Name:               None
--------------------------------------
Shared Domain:      00007ffd7b1da170
LowFrequencyHeap:   00007ffd7b1dacb8
HighFrequencyHeap:  00007ffd7b1dad48
StubHeap:           00007ffd7b1dadd8
Stage:              OPEN
Name:               None
Assembly:           0000022c68d14de0 [C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll]
ClassLoader:        0000022c68d07b50
  Module Name
00007ffd74071000            C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll

--------------------------------------
Domain 1:           0000022c68cc9370
LowFrequencyHeap:   0000022c68cc9b68
HighFrequencyHeap:  0000022c68cc9bf8
StubHeap:           0000022c68cc9c88
Stage:              OPEN
SecurityDescriptor: 0000022c68ca8460
Name:               ConsoleApp12.exe
Assembly:           0000022c68d14de0 [C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll]
ClassLoader:        0000022c68d07b50
SecurityDescriptor: 0000022c68d04e40
  Module Name
00007ffd74071000            C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll

Assembly:           0000022c68d22bb0 [C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\bin\x64\Release\ConsoleApp12.exe]
ClassLoader:        0000022c68d22cd0
SecurityDescriptor: 0000022c68d04d50
  Module Name
00007ffd1b184148            C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\bin\x64\Release\ConsoleApp12.exe

Assembly:           0000022c68d2ad00 [C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll]
ClassLoader:        0000022c68d2b3b0
SecurityDescriptor: 0000022c68d057a0
  Module Name
00007ffd6fe01000            C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll


0:000> !DumpModule  -MT /d 00007ffd1b184148
Name:       C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\bin\x64\Release\ConsoleApp12.exe
Attributes: PEFile 
Assembly:   0000022c68d22bb0
LoaderHeap:              0000000000000000
TypeDefToMethodTableMap: 00007ffd1b180070
TypeRefToMethodTableMap: 00007ffd1b180090
MethodDefToDescMap:      00007ffd1b1801e0
FieldDefToDescMap:       00007ffd1b180258
MemberRefToDescMap:      0000000000000000
FileReferencesMap:       00007ffd1b1802c8
AssemblyReferencesMap:   00007ffd1b1802d0
MetaData start address:  0000022c68c123c4 (3404 bytes)

Types defined in this module

              MT          TypeDef Name
------------------------------------------------------------------------------
00007ffd1b185b28 0x02000002 ConsoleApp12.Program

Types referenced in this module

              MT            TypeRef Name
------------------------------------------------------------------------------
00007ffd74095dd8 0x02000013 System.Object
00007ffd74110ec0 0x02000017 System.TimeSpan
00007ffd74116690 0x02000018 System.Threading.CancellationTokenSource
00007ffd74117030 0x02000019 System.Nullable`1
00007ffd74118ad8 0x0200001a System.Security.Principal.WindowsIdentity
00007ffd74114d38 0x0200001b System.IO.FileStream
00007ffd6fe7be98 0x0200001c System.Diagnostics.Stopwatch
00007ffd740849e0 0x02000024 System.Console
00007ffd7409aea8 0x02000025 System.Int64
0:000> !DumpMT /d 00007ffd1b185b28
EEClass:         00007ffd1b1826d0
Module:          00007ffd1b184148
Name:            ConsoleApp12.Program
mdToken:         0000000002000002
File:            C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\bin\x64\Release\ConsoleApp12.exe
BaseSize:        0x18
ComponentSize:   0x0
Slots in VTable: 12
Number of IFaces in IFaceMap: 0
0:000> !DumpMT -MD 00007ffd1b185b28
EEClass:         00007ffd1b1826d0
Module:          00007ffd1b184148
Name:            ConsoleApp12.Program
mdToken:         0000000002000002
File:            C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\bin\x64\Release\ConsoleApp12.exe
BaseSize:        0x18
ComponentSize:   0x0
Slots in VTable: 12
Number of IFaces in IFaceMap: 0
--------------------------------------
MethodDesc Table
           Entry       MethodDesc    JIT Name
00007ffd745f3450 00007ffd74078de8 PreJIT System.Object.ToString()
00007ffd7460dc60 00007ffd7423c180 PreJIT System.Object.Equals(System.Object)
00007ffd745f3090 00007ffd7423c1a8 PreJIT System.Object.GetHashCode()
00007ffd745f0420 00007ffd7423c1b0 PreJIT System.Object.Finalize()
00007ffd1b290500 00007ffd1b185b10   NONE ConsoleApp12.Program..cctor()
00007ffd1b2904f0 00007ffd1b185b08   NONE ConsoleApp12.Program..ctor()
00007ffd1b290490 00007ffd1b185a70   NONE ConsoleApp12.Program.WaitForSingleObject(IntPtr, UInt32)
00007ffd1b2904a0 00007ffd1b185ab8   NONE ConsoleApp12.Program.B(System.Object)
00007ffd1b2904b0 00007ffd1b185ac8   NONE ConsoleApp12.Program.A(System.Object)
00007ffd1b290890 00007ffd1b185ad8    JIT ConsoleApp12.Program.Main(System.String[])
00007ffd1b2908f0 00007ffd1b185ae8    JIT ConsoleApp12.Program.TestSpeedInt32()
00007ffd1b290ae0 00007ffd1b185af8    JIT ConsoleApp12.Program.TestSpeedInt64()
0:000> !DumpMD /d 00007ffd1b185af8
Method Name:  ConsoleApp12.Program.TestSpeedInt64()
Class:        00007ffd1b1826d0
MethodTable:  00007ffd1b185b28
mdToken:      0000000006000006
Module:       00007ffd1b184148
IsJitted:     yes
CodeAddr:     00007ffd1b290ae0
Transparency: Critical
  x64
  ConsoleApp12.Program.TestSpeedInt64
0:000> !U /d 00007ffd1b290ae0
Normal JIT generated code
ConsoleApp12.Program.TestSpeedInt64()
Begin 00007ffd1b290ae0, size 1d2
*** WARNING: Unable to verify checksum for C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\bin\x64\Release\ConsoleApp12.exe
C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 206:
>>> 00007ffd`1b290ae0 55              push    rbp
00007ffd`1b290ae1 4157            push    r15
00007ffd`1b290ae3 4156            push    r14
00007ffd`1b290ae5 4155            push    r13
00007ffd`1b290ae7 4154            push    r12
00007ffd`1b290ae9 57              push    rdi
00007ffd`1b290aea 56              push    rsi
00007ffd`1b290aeb 53              push    rbx
00007ffd`1b290aec 4883ec48        sub     rsp,48h
00007ffd`1b290af0 488d6c2420      lea     rbp,[rsp+20h]
00007ffd`1b290af5 33c0            xor     eax,eax
00007ffd`1b290af7 48894500        mov     qword ptr [rbp],rax
00007ffd`1b290afb 48894520        mov     qword ptr [rbp+20h],rax
00007ffd`1b290aff 48896520        mov     qword ptr [rbp+20h],rsp
00007ffd`1b290b03 48b8f245d3bc9c3b0000 mov rax,3B9CBCD345F2h
00007ffd`1b290b0d 48894500        mov     qword ptr [rbp],rax
00007ffd`1b290b11 33f6            xor     esi,esi
00007ffd`1b290b13 33ff            xor     edi,edi
00007ffd`1b290b15 33db            xor     ebx,ebx
00007ffd`1b290b17 4533f6          xor     r14d,r14d
00007ffd`1b290b1a 4533ff          xor     r15d,r15d
00007ffd`1b290b1d 4533e4          xor     r12d,r12d
00007ffd`1b290b20 4533ed          xor     r13d,r13d
00007ffd`1b290b23 33c0            xor     eax,eax
00007ffd`1b290b25 48894518        mov     qword ptr [rbp+18h],rax

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 207:
*** WARNING: Unable to verify checksum for C:\Windows\assembly\NativeImages_v4.0.30319_64\System\6aaf038fc5a894ddf3cbce94407fb772\System.ni.dll
00007ffd`1b290b29 48b998bee76ffd7f0000 mov rcx,offset System_ni+0x7be98 (00007ffd`6fe7be98) (MT: System.Diagnostics.Stopwatch)
00007ffd`1b290b33 e8081a535f      call    clr!JIT_TrialAllocSFastMP_InlineGetThread (00007ffd`7a7c2540)
00007ffd`1b290b38 33d2            xor     edx,edx
00007ffd`1b290b3a 48895008        mov     qword ptr [rax+8],rdx
00007ffd`1b290b3e c6401800        mov     byte ptr [rax+18h],0
00007ffd`1b290b42 48895010        mov     qword ptr [rax+10h],rdx
00007ffd`1b290b46 48894508        mov     qword ptr [rbp+8],rax
00007ffd`1b290b4a 80781800        cmp     byte ptr [rax+18h],0
00007ffd`1b290b4e 7515            jne     00007ffd`1b290b65
00007ffd`1b290b50 e8db8cea54      call    System_ni+0x339830 (00007ffd`70139830) (System.Diagnostics.Stopwatch.GetTimestamp(), mdToken: 00000000060030f3)
00007ffd`1b290b55 488b5508        mov     rdx,qword ptr [rbp+8]
00007ffd`1b290b59 48894210        mov     qword ptr [rdx+10h],rax
00007ffd`1b290b5d c6421801        mov     byte ptr [rdx+18h],1
00007ffd`1b290b61 48895508        mov     qword ptr [rbp+8],rdx
00007ffd`1b290b65 488b4508        mov     rax,qword ptr [rbp+8]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 208:
00007ffd`1b290b69 33c9            xor     ecx,ecx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 210:
00007ffd`1b290b6b 488b5518        mov     rdx,qword ptr [rbp+18h]
00007ffd`1b290b6f 48ffc2          inc     rdx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 211:
00007ffd`1b290b72 49ffc5          inc     r13

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 212:
00007ffd`1b290b75 49ffc4          inc     r12

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 213:
00007ffd`1b290b78 49ffc7          inc     r15

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 214:
00007ffd`1b290b7b 49ffc6          inc     r14

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 215:
00007ffd`1b290b7e 48ffc3          inc     rbx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 216:
00007ffd`1b290b81 48ffc7          inc     rdi

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 217:
00007ffd`1b290b84 48ffc6          inc     rsi

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 208:
00007ffd`1b290b87 ffc1            inc     ecx
00007ffd`1b290b89 81f980969800    cmp     ecx,989680h
00007ffd`1b290b8f 48895518        mov     qword ptr [rbp+18h],rdx
00007ffd`1b290b93 7cd6            jl      00007ffd`1b290b6b

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 219:
00007ffd`1b290b95 48894510        mov     qword ptr [rbp+10h],rax
00007ffd`1b290b99 488bc8          mov     rcx,rax
00007ffd`1b290b9c e80f33e554      call    System_ni+0x2e3eb0 (00007ffd`700e3eb0) (System.Diagnostics.Stopwatch.Stop(), mdToken: 00000000060030ec)
00007ffd`1b290ba1 488b4d10        mov     rcx,qword ptr [rbp+10h]
00007ffd`1b290ba5 e8361fe754      call    System_ni+0x302ae0 (00007ffd`70102ae0) (System.Diagnostics.Stopwatch.GetRawElapsedTicks(), mdToken: 00000000060030f4)
00007ffd`1b290baa 488bf0          mov     rsi,rax

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 222:
00007ffd`1b290bad 33c0            xor     eax,eax
00007ffd`1b290baf 488b7d10        mov     rdi,qword ptr [rbp+10h]
00007ffd`1b290bb3 48894708        mov     qword ptr [rdi+8],rax
00007ffd`1b290bb7 e8748cea54      call    System_ni+0x339830 (00007ffd`70139830) (System.Diagnostics.Stopwatch.GetTimestamp(), mdToken: 00000000060030f3)
00007ffd`1b290bbc 48894710        mov     qword ptr [rdi+10h],rax
00007ffd`1b290bc0 c6471801        mov     byte ptr [rdi+18h],1

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 223:
00007ffd`1b290bc4 4883c420        add     rsp,20h
00007ffd`1b290bc8 b904000000      mov     ecx,4
00007ffd`1b290bcd 6a00            push    0
00007ffd`1b290bcf 6a00            push    0
00007ffd`1b290bd1 48ffc9          dec     rcx
00007ffd`1b290bd4 75f7            jne     00007ffd`1b290bcd
00007ffd`1b290bd6 4883ec20        sub     rsp,20h
00007ffd`1b290bda 488d4c2420      lea     rcx,[rsp+20h]
00007ffd`1b290bdf 48896520        mov     qword ptr [rbp+20h],rsp

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 224:
00007ffd`1b290be3 33c0            xor     eax,eax
00007ffd`1b290be5 488d5108        lea     rdx,[rcx+8]
00007ffd`1b290be9 4c8d4110        lea     r8,[rcx+10h]
00007ffd`1b290bed 4c8d4918        lea     r9,[rcx+18h]
00007ffd`1b290bf1 4c8d5120        lea     r10,[rcx+20h]
00007ffd`1b290bf5 4c8d5928        lea     r11,[rcx+28h]
00007ffd`1b290bf9 488d5930        lea     rbx,[rcx+30h]
00007ffd`1b290bfd 4c8d7138        lea     r14,[rcx+38h]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 226:
00007ffd`1b290c01 48ff01          inc     qword ptr [rcx]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 227:
00007ffd`1b290c04 4c8bfa          mov     r15,rdx
00007ffd`1b290c07 49ff07          inc     qword ptr [r15]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 228:
00007ffd`1b290c0a 4d8bf8          mov     r15,r8
00007ffd`1b290c0d 49ff07          inc     qword ptr [r15]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 229:
00007ffd`1b290c10 4d8bf9          mov     r15,r9
00007ffd`1b290c13 49ff07          inc     qword ptr [r15]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 230:
00007ffd`1b290c16 4d8bfa          mov     r15,r10
00007ffd`1b290c19 49ff07          inc     qword ptr [r15]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 231:
00007ffd`1b290c1c 4d8bfb          mov     r15,r11
00007ffd`1b290c1f 49ff07          inc     qword ptr [r15]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 232:
00007ffd`1b290c22 4c8bfb          mov     r15,rbx
00007ffd`1b290c25 49ff07          inc     qword ptr [r15]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 233:
00007ffd`1b290c28 4d8bfe          mov     r15,r14
00007ffd`1b290c2b 49ff07          inc     qword ptr [r15]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 224:
00007ffd`1b290c2e ffc0            inc     eax
00007ffd`1b290c30 3d80969800      cmp     eax,989680h
00007ffd`1b290c35 7cca            jl      00007ffd`1b290c01

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 235:
00007ffd`1b290c37 488bcf          mov     rcx,rdi
00007ffd`1b290c3a e87132e554      call    System_ni+0x2e3eb0 (00007ffd`700e3eb0) (System.Diagnostics.Stopwatch.Stop(), mdToken: 00000000060030ec)
00007ffd`1b290c3f 488bcf          mov     rcx,rdi
00007ffd`1b290c42 e8991ee754      call    System_ni+0x302ae0 (00007ffd`70102ae0) (System.Diagnostics.Stopwatch.GetRawElapsedTicks(), mdToken: 00000000060030f4)
00007ffd`1b290c47 488bf8          mov     rdi,rax

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 237:
00007ffd`1b290c4a 48b9a8ae0974fd7f0000 mov rcx,offset mscorlib_ni!System.Reflection.RuntimeMethodInfo.get_IsOverloaded()$##600464C <PERF> (mscorlib_ni+0x2aea8) (00007ffd`7409aea8)
00007ffd`1b290c54 e8e718535f      call    clr!JIT_TrialAllocSFastMP_InlineGetThread (00007ffd`7a7c2540)
00007ffd`1b290c59 488bd8          mov     rbx,rax
00007ffd`1b290c5c 48897308        mov     qword ptr [rbx+8],rsi
00007ffd`1b290c60 48b9a8ae0974fd7f0000 mov rcx,offset mscorlib_ni!System.Reflection.RuntimeMethodInfo.get_IsOverloaded()$##600464C <PERF> (mscorlib_ni+0x2aea8) (00007ffd`7409aea8)
00007ffd`1b290c6a e8d118535f      call    clr!JIT_TrialAllocSFastMP_InlineGetThread (00007ffd`7a7c2540)
00007ffd`1b290c6f 4c8bc0          mov     r8,rax
00007ffd`1b290c72 49897808        mov     qword ptr [r8+8],rdi
00007ffd`1b290c76 488bd3          mov     rdx,rbx
00007ffd`1b290c79 48b9903600102c020000 mov rcx,22C10003690h
00007ffd`1b290c83 488b09          mov     rcx,qword ptr [rcx]
00007ffd`1b290c86 e8c5923859      call    mscorlib_ni!System.Console.WriteLine(System.String, System.Object, System.Object)$##6000B7B (00007ffd`74619f50)

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 238:
00007ffd`1b290c8b 48b9f245d3bc9c3b0000 mov rcx,3B9CBCD345F2h
00007ffd`1b290c95 48394d00        cmp     qword ptr [rbp],rcx
00007ffd`1b290c99 7405            je      00007ffd`1b290ca0
00007ffd`1b290c9b e85054865f      call    clr!DoJITFailFast (00007ffd`7aaf60f0)
00007ffd`1b290ca0 90              nop
00007ffd`1b290ca1 488d6528        lea     rsp,[rbp+28h]
00007ffd`1b290ca5 5b              pop     rbx
00007ffd`1b290ca6 5e              pop     rsi
00007ffd`1b290ca7 5f              pop     rdi
00007ffd`1b290ca8 415c            pop     r12
00007ffd`1b290caa 415d            pop     r13
00007ffd`1b290cac 415e            pop     r14
00007ffd`1b290cae 415f            pop     r15
00007ffd`1b290cb0 5d              pop     rbp
00007ffd`1b290cb1 c3              ret

  ConsoleApp12.Program.TestSpeedInt32()
0:000> !U /d 00007ffd1b290ae0
Normal JIT generated code
ConsoleApp12.Program.TestSpeedInt64()
Begin 00007ffd1b290ae0, size 1d2
*** WARNING: Unable to verify checksum for C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\bin\x64\Release\ConsoleApp12.exe

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 206:
>>> 00007ffd`1b290ae0 55              push    rbp
00007ffd`1b290ae1 4157            push    r15
00007ffd`1b290ae3 4156            push    r14
00007ffd`1b290ae5 4155            push    r13
00007ffd`1b290ae7 4154            push    r12
00007ffd`1b290ae9 57              push    rdi
00007ffd`1b290aea 56              push    rsi
00007ffd`1b290aeb 53              push    rbx
00007ffd`1b290aec 4883ec48        sub     rsp,48h
00007ffd`1b290af0 488d6c2420      lea     rbp,[rsp+20h]
00007ffd`1b290af5 33c0            xor     eax,eax
00007ffd`1b290af7 48894500        mov     qword ptr [rbp],rax
00007ffd`1b290afb 48894520        mov     qword ptr [rbp+20h],rax
00007ffd`1b290aff 48896520        mov     qword ptr [rbp+20h],rsp
00007ffd`1b290b03 48b8f245d3bc9c3b0000 mov rax,3B9CBCD345F2h
00007ffd`1b290b0d 48894500        mov     qword ptr [rbp],rax
00007ffd`1b290b11 33f6            xor     esi,esi
00007ffd`1b290b13 33ff            xor     edi,edi
00007ffd`1b290b15 33db            xor     ebx,ebx
00007ffd`1b290b17 4533f6          xor     r14d,r14d
00007ffd`1b290b1a 4533ff          xor     r15d,r15d
00007ffd`1b290b1d 4533e4          xor     r12d,r12d
00007ffd`1b290b20 4533ed          xor     r13d,r13d
00007ffd`1b290b23 33c0            xor     eax,eax
00007ffd`1b290b25 48894518        mov     qword ptr [rbp+18h],rax

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 207:
*** WARNING: Unable to verify checksum for C:\Windows\assembly\NativeImages_v4.0.30319_64\System\6aaf038fc5a894ddf3cbce94407fb772\System.ni.dll
00007ffd`1b290b29 48b998bee76ffd7f0000 mov rcx,offset System_ni+0x7be98 (00007ffd`6fe7be98) (MT: System.Diagnostics.Stopwatch)
00007ffd`1b290b33 e8081a535f      call    clr!JIT_TrialAllocSFastMP_InlineGetThread (00007ffd`7a7c2540)
00007ffd`1b290b38 33d2            xor     edx,edx
00007ffd`1b290b3a 48895008        mov     qword ptr [rax+8],rdx
00007ffd`1b290b3e c6401800        mov     byte ptr [rax+18h],0
00007ffd`1b290b42 48895010        mov     qword ptr [rax+10h],rdx
00007ffd`1b290b46 48894508        mov     qword ptr [rbp+8],rax
00007ffd`1b290b4a 80781800        cmp     byte ptr [rax+18h],0
00007ffd`1b290b4e 7515            jne     00007ffd`1b290b65
00007ffd`1b290b50 e8db8cea54      call    System_ni+0x339830 (00007ffd`70139830) (System.Diagnostics.Stopwatch.GetTimestamp(), mdToken: 00000000060030f3)
00007ffd`1b290b55 488b5508        mov     rdx,qword ptr [rbp+8]
00007ffd`1b290b59 48894210        mov     qword ptr [rdx+10h],rax
00007ffd`1b290b5d c6421801        mov     byte ptr [rdx+18h],1
00007ffd`1b290b61 48895508        mov     qword ptr [rbp+8],rdx
00007ffd`1b290b65 488b4508        mov     rax,qword ptr [rbp+8]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 208:
00007ffd`1b290b69 33c9            xor     ecx,ecx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 210:
00007ffd`1b290b6b 488b5518        mov     rdx,qword ptr [rbp+18h]
00007ffd`1b290b6f 48ffc2          inc     rdx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 211:
00007ffd`1b290b72 49ffc5          inc     r13

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 212:
00007ffd`1b290b75 49ffc4          inc     r12

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 213:
00007ffd`1b290b78 49ffc7          inc     r15

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 214:
00007ffd`1b290b7b 49ffc6          inc     r14

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 215:
00007ffd`1b290b7e 48ffc3          inc     rbx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 216:
00007ffd`1b290b81 48ffc7          inc     rdi

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 217:
00007ffd`1b290b84 48ffc6          inc     rsi

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 208:
00007ffd`1b290b87 ffc1            inc     ecx
00007ffd`1b290b89 81f980969800    cmp     ecx,989680h
00007ffd`1b290b8f 48895518        mov     qword ptr [rbp+18h],rdx
00007ffd`1b290b93 7cd6            jl      00007ffd`1b290b6b

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 219:
00007ffd`1b290b95 48894510        mov     qword ptr [rbp+10h],rax
00007ffd`1b290b99 488bc8          mov     rcx,rax
00007ffd`1b290b9c e80f33e554      call    System_ni+0x2e3eb0 (00007ffd`700e3eb0) (System.Diagnostics.Stopwatch.Stop(), mdToken: 00000000060030ec)
00007ffd`1b290ba1 488b4d10        mov     rcx,qword ptr [rbp+10h]
00007ffd`1b290ba5 e8361fe754      call    System_ni+0x302ae0 (00007ffd`70102ae0) (System.Diagnostics.Stopwatch.GetRawElapsedTicks(), mdToken: 00000000060030f4)
00007ffd`1b290baa 488bf0          mov     rsi,rax

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 222:
00007ffd`1b290bad 33c0            xor     eax,eax
00007ffd`1b290baf 488b7d10        mov     rdi,qword ptr [rbp+10h]
00007ffd`1b290bb3 48894708        mov     qword ptr [rdi+8],rax
00007ffd`1b290bb7 e8748cea54      call    System_ni+0x339830 (00007ffd`70139830) (System.Diagnostics.Stopwatch.GetTimestamp(), mdToken: 00000000060030f3)
00007ffd`1b290bbc 48894710        mov     qword ptr [rdi+10h],rax
00007ffd`1b290bc0 c6471801        mov     byte ptr [rdi+18h],1

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 223:
00007ffd`1b290bc4 4883c420        add     rsp,20h
00007ffd`1b290bc8 b904000000      mov     ecx,4
00007ffd`1b290bcd 6a00            push    0
00007ffd`1b290bcf 6a00            push    0
00007ffd`1b290bd1 48ffc9          dec     rcx
00007ffd`1b290bd4 75f7            jne     00007ffd`1b290bcd
00007ffd`1b290bd6 4883ec20        sub     rsp,20h
00007ffd`1b290bda 488d4c2420      lea     rcx,[rsp+20h]
00007ffd`1b290bdf 48896520        mov     qword ptr [rbp+20h],rsp

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 224:
00007ffd`1b290be3 33c0            xor     eax,eax
00007ffd`1b290be5 488d5108        lea     rdx,[rcx+8]
00007ffd`1b290be9 4c8d4110        lea     r8,[rcx+10h]
00007ffd`1b290bed 4c8d4918        lea     r9,[rcx+18h]
00007ffd`1b290bf1 4c8d5120        lea     r10,[rcx+20h]
00007ffd`1b290bf5 4c8d5928        lea     r11,[rcx+28h]
00007ffd`1b290bf9 488d5930        lea     rbx,[rcx+30h]
00007ffd`1b290bfd 4c8d7138        lea     r14,[rcx+38h]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 226:
00007ffd`1b290c01 48ff01          inc     qword ptr [rcx]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 227:
00007ffd`1b290c04 4c8bfa          mov     r15,rdx
00007ffd`1b290c07 49ff07          inc     qword ptr [r15]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 228:
00007ffd`1b290c0a 4d8bf8          mov     r15,r8
00007ffd`1b290c0d 49ff07          inc     qword ptr [r15]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 229:
00007ffd`1b290c10 4d8bf9          mov     r15,r9
00007ffd`1b290c13 49ff07          inc     qword ptr [r15]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 230:
00007ffd`1b290c16 4d8bfa          mov     r15,r10
00007ffd`1b290c19 49ff07          inc     qword ptr [r15]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 231:
00007ffd`1b290c1c 4d8bfb          mov     r15,r11
00007ffd`1b290c1f 49ff07          inc     qword ptr [r15]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 232:
00007ffd`1b290c22 4c8bfb          mov     r15,rbx
00007ffd`1b290c25 49ff07          inc     qword ptr [r15]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 233:
00007ffd`1b290c28 4d8bfe          mov     r15,r14
00007ffd`1b290c2b 49ff07          inc     qword ptr [r15]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 224:
00007ffd`1b290c2e ffc0            inc     eax
00007ffd`1b290c30 3d80969800      cmp     eax,989680h
00007ffd`1b290c35 7cca            jl      00007ffd`1b290c01

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 235:
00007ffd`1b290c37 488bcf          mov     rcx,rdi
00007ffd`1b290c3a e87132e554      call    System_ni+0x2e3eb0 (00007ffd`700e3eb0) (System.Diagnostics.Stopwatch.Stop(), mdToken: 00000000060030ec)
00007ffd`1b290c3f 488bcf          mov     rcx,rdi
00007ffd`1b290c42 e8991ee754      call    System_ni+0x302ae0 (00007ffd`70102ae0) (System.Diagnostics.Stopwatch.GetRawElapsedTicks(), mdToken: 00000000060030f4)
00007ffd`1b290c47 488bf8          mov     rdi,rax

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 237:
00007ffd`1b290c4a 48b9a8ae0974fd7f0000 mov rcx,offset mscorlib_ni!System.Reflection.RuntimeMethodInfo.get_IsOverloaded()$##600464C <PERF> (mscorlib_ni+0x2aea8) (00007ffd`7409aea8)
00007ffd`1b290c54 e8e718535f      call    clr!JIT_TrialAllocSFastMP_InlineGetThread (00007ffd`7a7c2540)
00007ffd`1b290c59 488bd8          mov     rbx,rax
00007ffd`1b290c5c 48897308        mov     qword ptr [rbx+8],rsi
00007ffd`1b290c60 48b9a8ae0974fd7f0000 mov rcx,offset mscorlib_ni!System.Reflection.RuntimeMethodInfo.get_IsOverloaded()$##600464C <PERF> (mscorlib_ni+0x2aea8) (00007ffd`7409aea8)
00007ffd`1b290c6a e8d118535f      call    clr!JIT_TrialAllocSFastMP_InlineGetThread (00007ffd`7a7c2540)
00007ffd`1b290c6f 4c8bc0          mov     r8,rax
00007ffd`1b290c72 49897808        mov     qword ptr [r8+8],rdi
00007ffd`1b290c76 488bd3          mov     rdx,rbx
00007ffd`1b290c79 48b9903600102c020000 mov rcx,22C10003690h
00007ffd`1b290c83 488b09          mov     rcx,qword ptr [rcx]
00007ffd`1b290c86 e8c5923859      call    mscorlib_ni!System.Console.WriteLine(System.String, System.Object, System.Object)$##6000B7B (00007ffd`74619f50)

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 238:
00007ffd`1b290c8b 48b9f245d3bc9c3b0000 mov rcx,3B9CBCD345F2h
00007ffd`1b290c95 48394d00        cmp     qword ptr [rbp],rcx
00007ffd`1b290c99 7405            je      00007ffd`1b290ca0
00007ffd`1b290c9b e85054865f      call    clr!DoJITFailFast (00007ffd`7aaf60f0)
00007ffd`1b290ca0 90              nop
00007ffd`1b290ca1 488d6528        lea     rsp,[rbp+28h]
00007ffd`1b290ca5 5b              pop     rbx
00007ffd`1b290ca6 5e              pop     rsi
00007ffd`1b290ca7 5f              pop     rdi
00007ffd`1b290ca8 415c            pop     r12
00007ffd`1b290caa 415d            pop     r13
00007ffd`1b290cac 415e            pop     r14
00007ffd`1b290cae 415f            pop     r15
00007ffd`1b290cb0 5d              pop     rbp
00007ffd`1b290cb1 c3              ret
  x86
  ConsoleApp12.Program.TestSpeedInt64()
0:007> !DumpMD /d 031f4e14
Method Name:  ConsoleApp12.Program.TestSpeedInt64()
Class:        031f1398
MethodTable:  031f4e38
mdToken:      06000006
Module:       031f4044
IsJitted:     yes
CodeAddr:     032809f0
Transparency: Critical
0:007> !U /d 032809f0
Normal JIT generated code
ConsoleApp12.Program.TestSpeedInt64()
Begin 032809f0, size 1b1

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 206:
>>> 032809f0 55              push    ebp
032809f1 8bec            mov     ebp,esp
032809f3 57              push    edi
032809f4 56              push    esi
032809f5 53              push    ebx
032809f6 83ec18          sub     esp,18h
032809f9 33c0            xor     eax,eax
032809fb 8945dc          mov     dword ptr [ebp-24h],eax
032809fe 8945f0          mov     dword ptr [ebp-10h],eax
03280a01 8965f0          mov     dword ptr [ebp-10h],esp
03280a04 c745dcf8f90bd5  mov     dword ptr [ebp-24h],0D50BF9F8h

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 207:
03280a0b b97453236f      mov     ecx,offset System_ni+0x45374 (6f235374) (MT: System.Diagnostics.Stopwatch)
03280a10 e8b32674fe      call    019c30c8 (JitHelp: CORINFO_HELP_NEWSFAST)
03280a15 8bf0            mov     esi,eax
03280a17 c7460400000000  mov     dword ptr [esi+4],0
03280a1e c7460800000000  mov     dword ptr [esi+8],0
03280a25 c6461400        mov     byte ptr [esi+14h],0
03280a29 c7460c00000000  mov     dword ptr [esi+0Ch],0
03280a30 c7461000000000  mov     dword ptr [esi+10h],0
03280a37 807e1400        cmp     byte ptr [esi+14h],0
03280a3b 750f            jne     03280a4c
03280a3d e8ee50176c      call    System_ni+0x205b30 (6f3f5b30) (System.Diagnostics.Stopwatch.GetTimestamp(), mdToken: 060030f3)
03280a42 89460c          mov     dword ptr [esi+0Ch],eax
03280a45 895610          mov     dword ptr [esi+10h],edx
03280a48 c6461401        mov     byte ptr [esi+14h],1

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 208:
03280a4c 33c0            xor     eax,eax
03280a4e 40              inc     eax
03280a4f 3d80969800      cmp     eax,989680h
03280a54 7cf8            jl      03280a4e

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 219:
03280a56 8bce            mov     ecx,esi
03280a58 e8d32e136c      call    System_ni+0x1c3930 (6f3b3930) (System.Diagnostics.Stopwatch.Stop(), mdToken: 060030ec)
03280a5d 8bce            mov     ecx,esi
03280a5f e8cc9d146c      call    System_ni+0x1da830 (6f3ca830) (System.Diagnostics.Stopwatch.GetRawElapsedTicks(), mdToken: 060030f4)
03280a64 8945e8          mov     dword ptr [ebp-18h],eax
03280a67 8955ec          mov     dword ptr [ebp-14h],edx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 222:
03280a6a c7460400000000  mov     dword ptr [esi+4],0
03280a71 c7460800000000  mov     dword ptr [esi+8],0
03280a78 e8b350176c      call    System_ni+0x205b30 (6f3f5b30) (System.Diagnostics.Stopwatch.GetTimestamp(), mdToken: 060030f3)
03280a7d 89460c          mov     dword ptr [esi+0Ch],eax
03280a80 895610          mov     dword ptr [esi+10h],edx
03280a83 c6461401        mov     byte ptr [esi+14h],1

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 223:
03280a87 b810000000      mov     eax,10h
03280a8c 6a00            push    0
03280a8e 48              dec     eax
03280a8f 75fb            jne     03280a8c
03280a91 8bc4            mov     eax,esp
03280a93 8965f0          mov     dword ptr [ebp-10h],esp
03280a96 8bc8            mov     ecx,eax

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 224:
03280a98 33db            xor     ebx,ebx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 226:
03280a9a 8b01            mov     eax,dword ptr [ecx]
03280a9c 8b5104          mov     edx,dword ptr [ecx+4]
03280a9f 83c001          add     eax,1
03280aa2 83d200          adc     edx,0
03280aa5 8901            mov     dword ptr [ecx],eax
03280aa7 895104          mov     dword ptr [ecx+4],edx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 227:
03280aaa 8b4108          mov     eax,dword ptr [ecx+8]
03280aad 8b510c          mov     edx,dword ptr [ecx+0Ch]
03280ab0 83c001          add     eax,1
03280ab3 83d200          adc     edx,0
03280ab6 894108          mov     dword ptr [ecx+8],eax
03280ab9 89510c          mov     dword ptr [ecx+0Ch],edx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 228:
03280abc 8d7910          lea     edi,[ecx+10h]
03280abf 8b07            mov     eax,dword ptr [edi]
03280ac1 8b5704          mov     edx,dword ptr [edi+4]
03280ac4 83c001          add     eax,1
03280ac7 83d200          adc     edx,0
03280aca 8907            mov     dword ptr [edi],eax
03280acc 895704          mov     dword ptr [edi+4],edx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 229:
03280acf 8d7918          lea     edi,[ecx+18h]
03280ad2 8b07            mov     eax,dword ptr [edi]
03280ad4 8b5704          mov     edx,dword ptr [edi+4]
03280ad7 83c001          add     eax,1
03280ada 83d200          adc     edx,0
03280add 8907            mov     dword ptr [edi],eax
03280adf 895704          mov     dword ptr [edi+4],edx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 230:
03280ae2 8d7920          lea     edi,[ecx+20h]
03280ae5 8b07            mov     eax,dword ptr [edi]
03280ae7 8b5704          mov     edx,dword ptr [edi+4]
03280aea 83c001          add     eax,1
03280aed 83d200          adc     edx,0
03280af0 8907            mov     dword ptr [edi],eax
03280af2 895704          mov     dword ptr [edi+4],edx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 231:
03280af5 8d7928          lea     edi,[ecx+28h]
03280af8 8b07            mov     eax,dword ptr [edi]
03280afa 8b5704          mov     edx,dword ptr [edi+4]
03280afd 83c001          add     eax,1
03280b00 83d200          adc     edx,0
03280b03 8907            mov     dword ptr [edi],eax
03280b05 895704          mov     dword ptr [edi+4],edx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 232:
03280b08 8d7930          lea     edi,[ecx+30h]
03280b0b 8b07            mov     eax,dword ptr [edi]
03280b0d 8b5704          mov     edx,dword ptr [edi+4]
03280b10 83c001          add     eax,1
03280b13 83d200          adc     edx,0
03280b16 8907            mov     dword ptr [edi],eax
03280b18 895704          mov     dword ptr [edi+4],edx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 233:
03280b1b 8d7938          lea     edi,[ecx+38h]
03280b1e 8b07            mov     eax,dword ptr [edi]
03280b20 8b5704          mov     edx,dword ptr [edi+4]
03280b23 83c001          add     eax,1
03280b26 83d200          adc     edx,0
03280b29 8907            mov     dword ptr [edi],eax
03280b2b 895704          mov     dword ptr [edi+4],edx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 224:
03280b2e 43              inc     ebx
03280b2f 81fb80969800    cmp     ebx,989680h
03280b35 0f8c5fffffff    jl      03280a9a

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 235:
03280b3b 8bce            mov     ecx,esi
03280b3d e8ee2d136c      call    System_ni+0x1c3930 (6f3b3930) (System.Diagnostics.Stopwatch.Stop(), mdToken: 060030ec)
03280b42 8bce            mov     ecx,esi
03280b44 e8e79c146c      call    System_ni+0x1da830 (6f3ca830) (System.Diagnostics.Stopwatch.GetRawElapsedTicks(), mdToken: 060030f4)
03280b49 8955e4          mov     dword ptr [ebp-1Ch],edx
03280b4c 8bd8            mov     ebx,eax

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 237:
03280b4e b90c15cf6f      mov     ecx,offset mscorlib_ni!System.Text.Encoding.GetEncodingCodePage(Int32)$##6006719 <PERF> (mscorlib_ni+0x1150c) (6fcf150c)
03280b53 e8702574fe      call    019c30c8 (JitHelp: CORINFO_HELP_NEWSFAST)
03280b58 8bf0            mov     esi,eax
03280b5a b90c15cf6f      mov     ecx,offset mscorlib_ni!System.Text.Encoding.GetEncodingCodePage(Int32)$##6006719 <PERF> (mscorlib_ni+0x1150c) (6fcf150c)
03280b5f e8642574fe      call    019c30c8 (JitHelp: CORINFO_HELP_NEWSFAST)
03280b64 8bc8            mov     ecx,eax
03280b66 8b3d4c233f04    mov     edi,dword ptr ds:[43F234Ch] ("elapsed for variable =  {0:D} \tarray = {1:D}")
03280b6c 8b45e8          mov     eax,dword ptr [ebp-18h]
03280b6f 8b55ec          mov     edx,dword ptr [ebp-14h]
03280b72 894604          mov     dword ptr [esi+4],eax
03280b75 895608          mov     dword ptr [esi+8],edx
03280b78 8bd6            mov     edx,esi
03280b7a 8b45e4          mov     eax,dword ptr [ebp-1Ch]
03280b7d 895904          mov     dword ptr [ecx+4],ebx
03280b80 894108          mov     dword ptr [ecx+8],eax
03280b83 51              push    ecx
03280b84 8bcf            mov     ecx,edi
03280b86 e82930e46c      call    mscorlib_ni!System.Console.WriteLine(System.String, System.Object, System.Object)$##6000B7B (700c3bb4)

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 238:
03280b8b 817ddcf8f90bd5  cmp     dword ptr [ebp-24h],0D50BF9F8h
03280b92 7405            je      03280b99
03280b94 e8f7ee826e      call    clr!JIT_FailFast (71aafa90)
03280b99 8d65f4          lea     esp,[ebp-0Ch]
03280b9c 5b              pop     ebx
03280b9d 5e              pop     esi
03280b9e 5f              pop     edi
03280b9f 5d              pop     ebp
03280ba0 c3              ret


  ConsoleApp12.Program.TestSpeedInt32()
0:007> !DumpMD /d 031f4e08
Method Name:  ConsoleApp12.Program.TestSpeedInt32()
Class:        031f1398
MethodTable:  031f4e38
mdToken:      06000005
Module:       031f4044
IsJitted:     yes
CodeAddr:     03280890
Transparency: Critical
0:007> !U /d 03280890
Normal JIT generated code
ConsoleApp12.Program.TestSpeedInt32()
Begin 03280890, size 149
*** WARNING: Unable to verify checksum for C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\bin\x86\Release\ConsoleApp12.exe

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 170:
>>> 03280890 55              push    ebp
03280891 8bec            mov     ebp,esp
03280893 57              push    edi
03280894 56              push    esi
03280895 53              push    ebx
03280896 83ec18          sub     esp,18h
03280899 33c0            xor     eax,eax
0328089b 8945dc          mov     dword ptr [ebp-24h],eax
0328089e 8945f0          mov     dword ptr [ebp-10h],eax
032808a1 8965f0          mov     dword ptr [ebp-10h],esp
032808a4 c745dcf8f90bd5  mov     dword ptr [ebp-24h],0D50BF9F8h

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 171:
032808ab b9284f1f03      mov     ecx,31F4F28h
032808b0 ba04050000      mov     edx,504h
032808b5 e8a62b74fe      call    019c3460 (JitHelp: CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE)
*** WARNING: Unable to verify checksum for C:\Windows\assembly\NativeImages_v4.0.30319_32\System\ec6f62a404182f6fb54d32738ecb3684\System.ni.dll
032808ba b97453236f      mov     ecx,offset System_ni+0x45374 (6f235374) (MT: System.Diagnostics.Stopwatch)
032808bf e8042874fe      call    019c30c8 (JitHelp: CORINFO_HELP_NEWSFAST)
032808c4 8bf0            mov     esi,eax
032808c6 c7460400000000  mov     dword ptr [esi+4],0
032808cd c7460800000000  mov     dword ptr [esi+8],0
032808d4 c6461400        mov     byte ptr [esi+14h],0
032808d8 c7460c00000000  mov     dword ptr [esi+0Ch],0
032808df c7461000000000  mov     dword ptr [esi+10h],0
032808e6 807e1400        cmp     byte ptr [esi+14h],0
032808ea 750f            jne     032808fb
032808ec e83f52176c      call    System_ni+0x205b30 (6f3f5b30) (System.Diagnostics.Stopwatch.GetTimestamp(), mdToken: 060030f3)
032808f1 89460c          mov     dword ptr [esi+0Ch],eax
032808f4 895610          mov     dword ptr [esi+10h],edx
032808f7 c6461401        mov     byte ptr [esi+14h],1

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 172:
032808fb 33c0            xor     eax,eax
032808fd 40              inc     eax
032808fe 3d80969800      cmp     eax,989680h
03280903 7cf8            jl      032808fd

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 183:
03280905 8bce            mov     ecx,esi
03280907 e82430136c      call    System_ni+0x1c3930 (6f3b3930) (System.Diagnostics.Stopwatch.Stop(), mdToken: 060030ec)
0328090c 8bce            mov     ecx,esi
0328090e e81d9f146c      call    System_ni+0x1da830 (6f3ca830) (System.Diagnostics.Stopwatch.GetRawElapsedTicks(), mdToken: 060030f4)
03280913 8955ec          mov     dword ptr [ebp-14h],edx
03280916 8bd8            mov     ebx,eax

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 186:
03280918 c7460400000000  mov     dword ptr [esi+4],0
0328091f c7460800000000  mov     dword ptr [esi+8],0
03280926 e80552176c      call    System_ni+0x205b30 (6f3f5b30) (System.Diagnostics.Stopwatch.GetTimestamp(), mdToken: 060030f3)
0328092b 89460c          mov     dword ptr [esi+0Ch],eax
0328092e 895610          mov     dword ptr [esi+10h],edx
03280931 c6461401        mov     byte ptr [esi+14h],1

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 187:
03280935 b808000000      mov     eax,8
0328093a 6a00            push    0
0328093c 48              dec     eax
0328093d 75fb            jne     0328093a
0328093f 8bc4            mov     eax,esp
03280941 8965f0          mov     dword ptr [ebp-10h],esp

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 188:
03280944 33c9            xor     ecx,ecx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 190:
03280946 ff00            inc     dword ptr [eax]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 191:
03280948 ff4004          inc     dword ptr [eax+4]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 192:
0328094b 8d5008          lea     edx,[eax+8]
0328094e ff02            inc     dword ptr [edx]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 193:
03280950 8d500c          lea     edx,[eax+0Ch]
03280953 ff02            inc     dword ptr [edx]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 194:
03280955 8d5010          lea     edx,[eax+10h]
03280958 ff02            inc     dword ptr [edx]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 195:
0328095a 8d5014          lea     edx,[eax+14h]
0328095d ff02            inc     dword ptr [edx]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 196:
0328095f 8d5018          lea     edx,[eax+18h]
03280962 ff02            inc     dword ptr [edx]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 197:
03280964 8d501c          lea     edx,[eax+1Ch]
03280967 ff02            inc     dword ptr [edx]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 188:
03280969 41              inc     ecx
0328096a 81f980969800    cmp     ecx,989680h
03280970 7cd4            jl      03280946

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 199:
03280972 8bce            mov     ecx,esi
03280974 e8b72f136c      call    System_ni+0x1c3930 (6f3b3930) (System.Diagnostics.Stopwatch.Stop(), mdToken: 060030ec)
03280979 8bce            mov     ecx,esi
0328097b e8b09e146c      call    System_ni+0x1da830 (6f3ca830) (System.Diagnostics.Stopwatch.GetRawElapsedTicks(), mdToken: 060030f4)
03280980 8945e0          mov     dword ptr [ebp-20h],eax
03280983 8955e4          mov     dword ptr [ebp-1Ch],edx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 201:
03280986 b90c15cf6f      mov     ecx,offset mscorlib_ni!System.Text.Encoding.GetEncodingCodePage(Int32)$##6006719 <PERF> (mscorlib_ni+0x1150c) (6fcf150c)
0328098b e8382774fe      call    019c30c8 (JitHelp: CORINFO_HELP_NEWSFAST)
03280990 8bf0            mov     esi,eax
03280992 b90c15cf6f      mov     ecx,offset mscorlib_ni!System.Text.Encoding.GetEncodingCodePage(Int32)$##6006719 <PERF> (mscorlib_ni+0x1150c) (6fcf150c)
03280997 e82c2774fe      call    019c30c8 (JitHelp: CORINFO_HELP_NEWSFAST)
0328099c 8bc8            mov     ecx,eax
0328099e 8b3d4c233f04    mov     edi,dword ptr ds:[43F234Ch] ("elapsed for variable =  {0:D} \tarray = {1:D}")
032809a4 8b45ec          mov     eax,dword ptr [ebp-14h]
032809a7 895e04          mov     dword ptr [esi+4],ebx
032809aa 894608          mov     dword ptr [esi+8],eax
032809ad 8b45e0          mov     eax,dword ptr [ebp-20h]
032809b0 8b55e4          mov     edx,dword ptr [ebp-1Ch]
032809b3 894104          mov     dword ptr [ecx+4],eax
032809b6 895108          mov     dword ptr [ecx+8],edx
032809b9 51              push    ecx
032809ba 8bcf            mov     ecx,edi
032809bc 8bd6            mov     edx,esi
032809be e8f131e46c      call    mscorlib_ni!System.Console.WriteLine(System.String, System.Object, System.Object)$##6000B7B (700c3bb4)

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 202:
032809c3 817ddcf8f90bd5  cmp     dword ptr [ebp-24h],0D50BF9F8h
032809ca 7405            je      032809d1
032809cc e8bff0826e      call    clr!JIT_FailFast (71aafa90)
032809d1 8d65f4          lea     esp,[ebp-0Ch]
032809d4 5b              pop     ebx
032809d5 5e              pop     esi
032809d6 5f              pop     edi
032809d7 5d              pop     ebp
032809d8 c3              ret


Всё это получалось так: после получения резульатов на экране — код должен был отджитится, к процессу цеплялся WinDbg64 или WinDbg32 соответственно. Не студией потому, что студия вностит коррективы в процесс Jitting'а, а меня тут интересовало то, что пойдёт в релиз — что будет на машине условного пользователя.

Тут на себя обращает внимание вот что:
C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 208:
03280a4c 33c0            xor     eax,eax
03280a4e 40              inc     eax
03280a4f 3d80969800      cmp     eax,989680h
03280a54 7cf8            jl      03280a4e

это x86, как ты видишь. Т.е. цикл есть, а реально инкремента In64 vars нет — соптимизировал.

Тоже самое для In32 vars:
C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 172:
032808fb 33c0            xor     eax,eax
032808fd 40              inc     eax
032808fe 3d80969800      cmp     eax,989680h
03280903 7cf8            jl      032808fd

Самого инкремента переменных нет.

Зато в x64 он честно в цикле проинкрементил все регистры:
C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 208:
00007ffd`1b290b69 33c9            xor     ecx,ecx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 210:
00007ffd`1b290b6b 488b5518        mov     rdx,qword ptr [rbp+18h]
00007ffd`1b290b6f 48ffc2          inc     rdx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 211:
00007ffd`1b290b72 49ffc5          inc     r13

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 212:
00007ffd`1b290b75 49ffc4          inc     r12

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 213:
00007ffd`1b290b78 49ffc7          inc     r15

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 214:
00007ffd`1b290b7b 49ffc6          inc     r14

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 215:
00007ffd`1b290b7e 48ffc3          inc     rbx

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 216:
00007ffd`1b290b81 48ffc7          inc     rdi

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 217:
00007ffd`1b290b84 48ffc6          inc     rsi

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 208:
00007ffd`1b290b87 ffc1            inc     ecx
00007ffd`1b290b89 81f980969800    cmp     ecx,989680h
00007ffd`1b290b8f 48895518        mov     qword ptr [rbp+18h],rdx
00007ffd`1b290b93 7cd6            jl      00007ffd`1b290b6b


В общем, тесты с инкрементом переменных надо переделывать

С массивами при этом ничего неожиданного не произошло. Инкремент элемента массива делается классическим способом:
1)Int64
C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 229:
03280acf 8d7918          lea     edi,[ecx+18h]
03280ad2 8b07            mov     eax,dword ptr [edi]
03280ad4 8b5704          mov     edx,dword ptr [edi+4]
03280ad7 83c001          add     eax,1
03280ada 83d200          adc     edx,0
03280add 8907            mov     dword ptr [edi],eax
03280adf 895704          mov     dword ptr [edi+4],edx

2) Int64 x64 — тоже ничего необычного, за исключением плясок с бубном вокруг регистра R15. Джиттеру наверное очень нравится адресовать элемент массива с помощью именно этого регистра.
C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 230:
00007ffd`1b290c16 4d8bfa          mov     r15,r10
00007ffd`1b290c19 49ff07          inc     qword ptr [r15]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 231:
00007ffd`1b290c1c 4d8bfb          mov     r15,r11
00007ffd`1b290c1f 49ff07          inc     qword ptr [r15]


2)Int32
C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 190:
03280946 ff00            inc     dword ptr [eax]

C:\WorkingSet\sources\ConsoleApp12\ConsoleApp12\Program.cs @ 191:
03280948 ff4004          inc     dword ptr [eax+4]


Показывай, что породил FPC для 64-бит, расскажи условия тестирования.
И наконец прекрати постить текст картинками!!!111111 У меня была идея взять твои результаты, посчитать медиану и стандартную ошибку, но с картинки это сделать невозможно.
Всё сказанное выше — личное мнение, если не указано обратное.
Отредактировано 15.03.2023 3:13 Философ . Предыдущая версия . Еще …
Отредактировано 15.03.2023 3:10 Философ . Предыдущая версия .
Re[11]: 32 bit
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 15.03.23 09:30
Оценка:
Здравствуйте, Aquilaware, Вы писали:

A>вы не умеете входить в ситуации окружающих людей


Я умею, но далеко не всегда хочу это делать. В частности, такого желания не возникает, когда доводы тех людей в итоге сводятся к "мне так тупо проще/удобнее, но вы должны войти в мое положение и пойти мне навстречу". При этом сам он, разумеется, в положение другого входить не намерен, и навстречу пойдет лишь в самом крайнем случае.

A>(эгоизм).


Эгоизм — это то, против чего такая позиция направлена.

A>если вам достаточно 300 Кб для программы, вы делаете вывод что всему миру этого обьема тоже достаточно


Подмена тезиса детектед. Приведите цитаты, в которых я утверждал, чего-то там должно быть достаточно всему миру.

Безусловно, сейчас достаточно задач, требующих большого количества ресурсов. Но это — капля в море всего современного софта, которого неимоверно много. За доказательствами далеко ходить не нужно: откройте Google Play и поищите там какие-нибудь очевидно простые по функциональности приложения. Найдете много приложений на мегабайты и десятки мегабайт, и среди них (но ближе к концу списка) нередко найдете на 100-200 килобайт, функциональность которых может оказаться даже лучше.

И повторю: плохо не то, что такой мусор вообще существует. Плохо то, что он объявлен нормой, на которую ориентируются остальные. И по сути это мало чем отличается от той же Турции, где построенные за последние 10-20 лет здания внешне и внутри выглядели вполне симпатично, разве что разрушительный потенциал меньше.
Re[14]: 32 bit
От: rudzuk  
Дата: 15.03.23 09:30
Оценка:
Здравствуйте, Философ, Вы писали:

Ф> R>Ну, сильно изменился общий результат?


Ф> Для начала расскажи как запускал. Есть серьёзное подозрение, что под дебаггером.


Сборка в релиз (оптимизация O3 + отключение рантайм проверок), запуск из командной строки.

Не изменилась картина, правда? То-то же. Нефиг было гнать на GetTickCount.

Ф> ...покажи что там компилятор паскали наоптимизировал.


Асм процедуры TestSpeedIntX<Int64>:
C:\FPC\fpcupdeluxe\projects\project1.lpr:21  begin
00000001000018B0 53                       push rbx
00000001000018B1 57                       push rdi
00000001000018B2 56                       push rsi
00000001000018B3 4154                     push r12
00000001000018B5 4155                     push r13
00000001000018B7 4156                     push r14
00000001000018B9 4157                     push r15
00000001000018BB 488D642490               lea rsp,[rsp-$70]
C:\FPC\fpcupdeluxe\projects\project1.lpr:22  a := 0;
00000001000018C0 48C744246800000000       mov qword ptr [rsp+$68],$00000000
C:\FPC\fpcupdeluxe\projects\project1.lpr:23  b := 0;
00000001000018C9 4531FF                   xor r15d,r15d
C:\FPC\fpcupdeluxe\projects\project1.lpr:24  c := 0;
00000001000018CC 4531F6                   xor r14d,r14d
C:\FPC\fpcupdeluxe\projects\project1.lpr:25  d := 0;
00000001000018CF 31DB                     xor ebx,ebx
C:\FPC\fpcupdeluxe\projects\project1.lpr:26  e := 0;
00000001000018D1 31F6                     xor esi,esi
C:\FPC\fpcupdeluxe\projects\project1.lpr:27  f := 0;
00000001000018D3 31FF                     xor edi,edi
C:\FPC\fpcupdeluxe\projects\project1.lpr:28  g := 0;
00000001000018D5 4531E4                   xor r12d,r12d
C:\FPC\fpcupdeluxe\projects\project1.lpr:29  h := 0;
00000001000018D8 4531ED                   xor r13d,r13d
C:\FPC\fpcupdeluxe\projects\project1.lpr:30  VariablesIncrementTime := GetTickCount;
00000001000018DB E860FEFFFF               call -$000001A0
00000001000018E0 4889442460               mov [rsp+$60],rax
C:\FPC\fpcupdeluxe\projects\project1.lpr:31  for i := 1 to Iterations do
00000001000018E5 B880969800               mov eax,$00989680
00000001000018EA 660F1F440000             nop word ptr [rax+rax+$00]
C:\FPC\fpcupdeluxe\projects\project1.lpr:33  Inc(a);
00000001000018F0 488344246801             add qword ptr [rsp+$68],$01
C:\FPC\fpcupdeluxe\projects\project1.lpr:34  Inc(b);
00000001000018F6 4983C701                 add r15,$01
C:\FPC\fpcupdeluxe\projects\project1.lpr:35  Inc(c);
00000001000018FA 4983C601                 add r14,$01
C:\FPC\fpcupdeluxe\projects\project1.lpr:36  Inc(d);
00000001000018FE 4883C301                 add rbx,$01
C:\FPC\fpcupdeluxe\projects\project1.lpr:37  Inc(e);
0000000100001902 4883C601                 add rsi,$01
C:\FPC\fpcupdeluxe\projects\project1.lpr:38  Inc(f);
0000000100001906 4883C701                 add rdi,$01
C:\FPC\fpcupdeluxe\projects\project1.lpr:39  Inc(g);
000000010000190A 4983C401                 add r12,$01
C:\FPC\fpcupdeluxe\projects\project1.lpr:40  Inc(h);
000000010000190E 4983C501                 add r13,$01
C:\FPC\fpcupdeluxe\projects\project1.lpr:31  for i := 1 to Iterations do
0000000100001912 4883E801                 sub rax,$01
0000000100001916 75D8                     jnz -$28
C:\FPC\fpcupdeluxe\projects\project1.lpr:42  VariablesIncrementTime := GetTickCount - VariablesIncrementTime;
0000000100001918 E823FEFFFF               call -$000001DD
000000010000191D 4889C6                   mov rsi,rax
0000000100001920 482B742460               sub rsi,[rsp+$60]
C:\FPC\fpcupdeluxe\projects\project1.lpr:44  ArrayItemIncrementTime := GetTickCount;
0000000100001925 E816FEFFFF               call -$000001EA
000000010000192A 4889C7                   mov rdi,rax
C:\FPC\fpcupdeluxe\projects\project1.lpr:45  for i := 1 to Iterations do
000000010000192D B880969800               mov eax,$00989680
0000000100001932 660F1F440000             nop word ptr [rax+rax+$00]
C:\FPC\fpcupdeluxe\projects\project1.lpr:47  Inc(SmallArray[0]);
0000000100001938 488344242001             add qword ptr [rsp+$20],$01
C:\FPC\fpcupdeluxe\projects\project1.lpr:48  Inc(SmallArray[1]);
000000010000193E 488344242801             add qword ptr [rsp+$28],$01
C:\FPC\fpcupdeluxe\projects\project1.lpr:49  Inc(SmallArray[2]);
0000000100001944 488344243001             add qword ptr [rsp+$30],$01
C:\FPC\fpcupdeluxe\projects\project1.lpr:50  Inc(SmallArray[3]);
000000010000194A 488344243801             add qword ptr [rsp+$38],$01
C:\FPC\fpcupdeluxe\projects\project1.lpr:51  Inc(SmallArray[4]);
0000000100001950 488344244001             add qword ptr [rsp+$40],$01
C:\FPC\fpcupdeluxe\projects\project1.lpr:52  Inc(SmallArray[5]);
0000000100001956 488344244801             add qword ptr [rsp+$48],$01
C:\FPC\fpcupdeluxe\projects\project1.lpr:53  Inc(SmallArray[6]);
000000010000195C 488344245001             add qword ptr [rsp+$50],$01
C:\FPC\fpcupdeluxe\projects\project1.lpr:54  Inc(SmallArray[7]);
0000000100001962 488344245801             add qword ptr [rsp+$58],$01
C:\FPC\fpcupdeluxe\projects\project1.lpr:45  for i := 1 to Iterations do
0000000100001968 4883E801                 sub rax,$01
000000010000196C 75CA                     jnz -$36
C:\FPC\fpcupdeluxe\projects\project1.lpr:56  ArrayItemIncrementTime := GetTickCount - ArrayItemIncrementTime;
000000010000196E E8CDFDFFFF               call -$00000233
0000000100001973 4889C3                   mov rbx,rax
0000000100001976 4829FB                   sub rbx,rdi
C:\FPC\fpcupdeluxe\projects\project1.lpr:58  WriteLn('elapsed for variable = ', VariablesIncrementTime, ' array = ', ArrayItemIncrementTime);
0000000100001979 E882A60000               call +$0000A682
000000010000197E 4889C7                   mov rdi,rax
0000000100001981 4C8D0590760100           lea r8,[rip+$00017690]
0000000100001988 4889C2                   mov rdx,rax
000000010000198B 31C9                     xor ecx,ecx
000000010000198D E88EA80000               call +$0000A88E
0000000100001992 E849690000               call +$00006949
0000000100001997 4889FA                   mov rdx,rdi
000000010000199A 4989F0                   mov r8,rsi
000000010000199D 31C9                     xor ecx,ecx
000000010000199F E8FCAA0000               call +$0000AAFC
00000001000019A4 E837690000               call +$00006937
00000001000019A9 4C8D0588760100           lea r8,[rip+$00017688]
00000001000019B0 4889FA                   mov rdx,rdi
00000001000019B3 31C9                     xor ecx,ecx
00000001000019B5 E866A80000               call +$0000A866
00000001000019BA E821690000               call +$00006921
00000001000019BF 4889FA                   mov rdx,rdi
00000001000019C2 4989D8                   mov r8,rbx
00000001000019C5 31C9                     xor ecx,ecx
00000001000019C7 E8D4AA0000               call +$0000AAD4
00000001000019CC E80F690000               call +$0000690F
00000001000019D1 4889F9                   mov rcx,rdi
00000001000019D4 E897A70000               call +$0000A797
00000001000019D9 E802690000               call +$00006902
C:\FPC\fpcupdeluxe\projects\project1.lpr:59  end;
00000001000019DE 90                       nop 
00000001000019DF 488D642470               lea rsp,[rsp+$70]
00000001000019E4 415F                     pop r15
00000001000019E6 415E                     pop r14
00000001000019E8 415D                     pop r13
00000001000019EA 415C                     pop r12
00000001000019EC 5E                       pop rsi
00000001000019ED 5F                       pop rdi
00000001000019EE 5B                       pop rbx
00000001000019EF C3                       ret
avalon/3.0.2
Re[15]: 32 bit
От: rudzuk  
Дата: 15.03.23 09:30
Оценка:
Здравствуйте, Философ, Вы писали:

Ф> Что у тебя за проц?


FX-4300

Ф> Ты под дебаггером код запускаешь что-ли?


У меня нет дотнетовских тулзов, кроме фреймворка с компилятором. Поэтому, собирал и запускал из командной строки.
avalon/3.0.2
Re[14]: 32 bit
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 15.03.23 09:45
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>Есть серьёзное подозрение, что под дебаггером.


Откуда? Отладчик, если он не безнадежно тупой, никак не взаимодействует с отлаживаемым процессом, пока тот не выполнит действие, вызывающее исключение — отладочный вывод, попадание на стоп-точку, ошибка и т.п. Если тестовый код не сыпет отладочными сообщениями сотни раз в секунду, производительность отличаться не будет.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.