Здравствуйте, Mystic Artifact, Вы писали:
MA> Я не знаю, но в том асме, что я видел — куча short-forward бранчей. Это то что почти все процессоры понимают, но я х.з.
Ну да — собственно каждый if или ?: — это short-forward branch.
MA> Я пока вывел такую закономерность: мой проц выигрывает когда не ошибается в бранчах, но ему почти пофигу на их количество. Твой проц — напротив сильно выигрывает от уменьшения кол-ва бранчинга (что странно, ведь он помоднее моего).
Да, похоже у моего зарезано предсказание переходов, или конвеер сделан по-другому. Влияет либо поколение, либо то, что у меня ноутбучная версия.
MA>Unsafe версия так же содержит идексеры a * b + c которые в идеале должы пониматься процессорами, если правильно скомпилировано. Я пробовал вручныю их вынести в отнельную переменную — получалось только хуже. 
Да, я это тоже пробовал. В ранних версиях я упирался в скользящие указатели, чтобы избежать вот этой арифметики. На практике JIT достаточно умный чтобы применить косвенную адресацию для более-менее всех интересных нам случаев.
MA> На самом деле хотелось бы увидеть еще пару железок и тогда можно сделать выводы. 
Ага. Можешь ещё выложить статистику по C4 бенчмарку?