Нехта публікуе замер, адна версія хутчэйшая на 8 адсоткаў, далей абмяркоўваюць чаму. Я і сам публікаваў такія лікі. Чаго я ніколі не рабіў, дык гэта не высвятляў, што кажа мая ўласная машына, калі знаходзіць няма чаго. Таму напісаў найменшы варыянт: 1 функцыя, аб’яўленая двойчы пад двума імёнамі, замяраецца сама супраць сябе. Сапраўдная розніца паміж імі роўная нулю па пабудове.
Унутры раўнда яны чаргуюцца, спачатку A, потым B, каб любы дрэйф машыны біў па абодвух. 200 раўндаў, цыкл па 200000 лікаў, ціхі Linux-сервер з 4 ядрамі, без іншай нагрузкі.
Першы раўнд заняў 2.118 мілісекунды. Усталяваная медыяна 0.593. Гэта ў 3.57 раза. Адзіная частка гісторыі, пра якую ўсе і так ведаюць.
Цяпер тое, чаго я не ведаў. Вазьмі 1 раўнд A і 1 раўнд B побач. Гэта і ёсць замер, зроблены адзін раз. З 180 усталяваных пар 19, то бок 10.6 адсотка, выдаюць пераможцу з разрывам больш за 5 адсоткаў. Найгоршая пара ставіць аднолькавы код на 32.9 адсотка наперадзе самога сябе.
Значыць чалавек, які прагнаў кожную версію па разе, убачыў 8 адсоткаў і напісаў пра гэта, не робіць нічога незвычайнага. Ён бярэ выбарку з размеркавання, якое хлусіць на 5 адсоткаў адзін раз з дзевяці.
Колькі раўндаў колькі купляюць
Лекі гэта паўтарэнне, і гэта кажуць усе. Карыснае пытанне ў іншым: колькі паўтораў колькі дакладнасці купляе. Я нарэзаў усталяваныя раўнды вокнамі і паглядзеў, наколькі гуляе медыяна паміж вокнамі аднаго памеру.
1 раўнд гуляе на 35.6 адсотка. 3 раўнды на 5.1. 5 раўндаў 2.8, 10 раўндаў 2.3, 30 раўндаў 0.2. Карысная тут форма: амаль уся выгада ляжыць у першай жменьцы паўтораў. Апошні адрэзак з 10 да 30 купляе ўжо тую дакладнасць, якая патрэбная, каб бараніць невялікае сцвярджэнне.
Два адсоткі, якія не сядзелі на месцы
Медыяны A і B разышліся на 2.04 адсотка. Код аднолькавы. 2 адсоткі гэта роўна той памер розніцы, пра які пішуць у блогах, таму я пайшоў шукаць прычыну. Здагадка была пра пазіцыю: A заўсёды ідзе ў раўндзе першым, B другім, значыць другі можа трапляць на прагрэты кэш.
Я памяняў іх месцамі. У перавернутым парадку знак перавярнуўся, мінус 1.84 адсотка, што здагадцы адпавядае. Потым прагнаў абодва парадкі яшчэ раз. Звычайны парадак даў плюс 2.24 адсотка, потым мінус 0.07. Перавернуты даў плюс 0.12.
3 прагоны з 5 паказваюць эфект парадку, 2 не паказваюць нічога. Значыць і тлумачэнне назваць устойлівым нельга. Розніца ў 2 адсоткі на гэтай машыне гэта не маленькі эфект, які я мог бы дагнаць больш акуратным тэстам. На такой выбарцы яна не прыпісваецца нічому. Сумленная справаздача гучыць так: я не ведаю, адкуль яна ўзялася.
Чаго я не правяраў
Ці пераносіцца гэта кудысьці. Тут 1 шчыльны лікавы цыкл без ніводнага вылучэння памяці, таму зборшчык смецця не запускаецца ніводнага разу. Найбуйнейшая крыніца дрыжання ў сапраўднай праграме адсутнічае ў доследзе цалкам. Я не чапаў кіраванне частатой на хасце, а яно рухае ядры роўна пад такой нагрузкай. І не паўтарыў нічога на другой машыне, значыць памераны ўзровень шуму належыць гэтай скрыні ў гэты вечар.
Вузкае сцвярджэнне гэта звычка, а не лік. Перш чым паверыць у розніцу, памерай узровень шуму той усталёўкі, якая яе выдала, параўнаўшы што-небудзь само з сабой. Усё, што ніжэй за гэты ўзровень, лічы нічым. Тут узровень каля 2 ці 3 адсоткаў пры 200 раўндах. Адзіночныя прагоны бескарысныя аж да 33.