Как стать автором
Обновить
24
0

Пользователь

Отправить сообщение
Урррааа!!!

У меня получилась спираль смерти!!! ))
Иногда они начинают тупить и ходить по кругу, причём если один ходит то второй проходя рядом тоже может начать )
Спасибо добрый человек! )
Да я даже не сразу догадался… по привычке в дебаге скомпилил первый пример — не зависает… )

Хорошая статья, давно у меня было подозрение что наша софтина в продакшине иногда ведёт себя очень странно…
Главное музыка в ролике очень в тему! ))
На codeforces.ru (типа русского TopCoder'а) можно решать задачки на Ruby, что очень порадовало ) И вообще там куча разных языков (в т.ч. С++, Delphi, Pascal, Java, PHP, Python, C#, C, Haskell)
За что спасибо вам огромное! я показывал предварительно черновик нескольким своим друзьям и знакомым (программистам, достаточно серъёзным) и никто даже не намекнул мне что там может быть такой косяк подобного рода )
Ваше высказывание справедливо лишь для первых 4-х микротестов, div10, sqrt, sin и cos.
Интересно что дизассемблер студии показывает вызов sqrt, sin и cos:
  for (int i = 0; i < _iterationCount; ++i)
00000048  xor         edx,edx 
0000004a  mov         dword ptr [ebp-14h],edx 
0000004d  nop 
0000004e  jmp         0000006D 
            {
                double x = System.Math.Sin(val);
00000050  fld         qword ptr [ebp-8] 
00000053  sub         esp,8 
00000056  fstp        qword ptr [esp] 
00000059  call        65081211 
0000005e  fstp        st(0) 
00000060  nop 
                val += dt;
00000061  fld         qword ptr [ebp-10h] 
00000064  fadd        qword ptr [ebp-8] 
00000067  fstp        qword ptr [ebp-8] 
            for (int i = 0; i < _iterationCount; ++i)
0000006a  inc         dword ptr [ebp-14h] 
0000006d  mov         eax,dword ptr [ebp-14h] 
00000070  mov         edx,dword ptr [ebp-18h] 
00000073  cmp         eax,dword ptr [edx+0Ch] 
00000076  jl          00000050 
            }

а реально этого не происходит
Всё просто:
1,31406 — количество операций за микросекунду (умножьте на миллион получите количество операций в секунду)
1522,00 милисекунд — суммарное время выполнения микротеста (за текущий проход)
2e+08 — количество итераций (за текущий проход)
Вы правы, здесь я облажался:
 for (int i = 0; i < _iterationCount; ++i)
00000025  xor         edx,edx 
00000027  mov         dword ptr [ebp-4],edx 
0000002a  nop 
0000002b  jmp         00000031 
            {
                int x = i / 10;
0000002d  nop 
            for (int i = 0; i < _iterationCount; ++i)
0000002e  inc         dword ptr [ebp-4] 
00000031  mov         eax,dword ptr [ebp-4] 
00000034  mov         edx,dword ptr [ebp-8] 
00000037  cmp         eax,dword ptr [edx+0Ch] 
0000003a  jl          0000002D 
            }
Ассемблерный листинг пока привести затрудняюсь…
Вот IL код представленного фрагмента:
.method public hidebysig virtual instance void 
        Do() cil managed
{
  // Code size       35 (0x23)
  .maxstack  2
  .locals init ([0] int32 i)
  IL_0000:  ldarg.0
  IL_0001:  call       instance void DotNetPerformance.SomeTest::StartTiming()
  IL_0006:  ldc.i4.0
  IL_0007:  stloc.0
  IL_0008:  br.s       IL_0013
  IL_000a:  ldloc.0
  IL_000b:  ldc.i4.s   10
  IL_000d:  div
  IL_000e:  pop
  IL_000f:  ldloc.0
  IL_0010:  ldc.i4.1
  IL_0011:  add
  IL_0012:  stloc.0
  IL_0013:  ldloc.0
  IL_0014:  ldarg.0
  IL_0015:  ldfld      int32 DotNetPerformance.SomeTest::_iterationCount
  IL_001a:  blt.s      IL_000a
  IL_001c:  ldarg.0
  IL_001d:  call       instance void DotNetPerformance.SomeTest::StopTiming()
  IL_0022:  ret
} // end of method Div10Test::Do

деление на 10 присутсвует
Да, явно не ставил, в будущем учту
Этих опций достаточно чтобы судить о результатах с этими опциями )
Intel Core Duo T2300 1,66 ГГц

Да, вы правы, в статье не указал явно, сейчас исправлю

Вас интересует количество итераций внутри микротеста или сколько раз запускался весь пакет тестов подряд? количество итераций внутри разных микротестов каждого типа от сотен тысяч до нескольких миллионов
Упомяну что на этих же тестах, .Net 4.0 была «совсем чуть-чуть немножко медленнее» чем 3.5, что меня немного разочаровало.
В статье есть ответы на ваши вопросы:
Весь тест циклически прогонялся по 10 раз

-Xms32m -Xmx768m
Товарищи давайте не будем холиварить, гораздо лучше обсудить степень компетентности автора :) и параметры запуска заодно.

Язык и среду каждый выбирает сам либо по задаче, либо по душе
Все параметры запуска специально приведены в статье
--desktop --gc=sgen
Спасибо! теперь имею представление о гемах )

Товарищи Ruby девелоперы, подскажите пожалуйста хорошую книжку новичку в Ruby

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность