Цитата: Delphi: 268 MB/s (updated)
C#: 141 MB/s
На моей машине
Delphi 309
C# 169+
для справедливости у методов
tiger_t1, tiger_t2, tiger_t3, tiger_t4
привел тип параметров к Integer вместо UInt64 по аналогии с Delphi
Скорость поднялась до 208+
потом всего лишь натыкав
[MethodImpl(MethodImplOptions.AggressiveInlining)]
у методов
tiger_t1, tiger_t2, tiger_t3, tiger_t4, tiger_round
удалось поднять планку до 217+
В итоге скорость только от таких незначительных манипуляций возросла на 28%, а если за дело возьмется профессионал и разложит все по полочкам, то думаю у C# не такая хреновая ситуация.
К примеру у меня Java вообще с ошибкой падает, что является эпик фэйлом
F:\Download\TigerHashJava\TigerHashJava>java -jar dist\TigerHashJava.jar
f373de2d49584e7a16166e76b1bb925f24f0130c63ac9332 Pass
2e4ec47d9a1e49eacc911a91417934dfb015a89db9b9292b Pass
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at tiger.TigerHashTest.MakeData(TigerHashTest.java:22)
at tiger.TigerHashTest.BenchmarkTiger(TigerHashTest.java:63)
at tiger.TigerHashTest.main(TigerHashTest.java:17)
Добавлено: Стоит отметить, что вариант на Delphi активно используется указатели при работе с массивами, а в C# все реализовано без указателей, в варианте Java вроде как используется заточенная для работы с буферами некая библиотека (не знаю стандартная или нет), что вероятно и придает производительности. С С++ все ясно, там и шаблоны и указатели, все родное.
Добавлено: И да, С++ выдало 596.
Изучаем и переходим все живо на С++, вот бухгалтерии будет счастье!!!)))