dotcom wrote:
При последовательном доступе hotspot может посчитать кол-во итераций до начала цикла.
При всем уважении, я не совсем понимаю, откуда взялся цикл. И тем более - почему этот цикл такой, при котором кто-то что-то может посчитать.
а что если цикл (ок-ок, пусть для простоты будет цикл) будет вида
for (int i=0; i<1000; i++) sum+=array[getIndexFromF__ckingNowhere(i)];
где getIndexFromF__ckingNowhere() - какая-то не поддающаяся хотспотовскому анализу внешняя функция, которая в одном случае возвращает тупо i, а в другом - someTrickyHashFunction(i)%1000
как противоположный вариант, можно без цикла. пусть будет
array[0]=0;
array[1]=0;
...
array[999]=0;
и против этого
array[372]=0;
array[491]=0;
...
array[013]=0;
вот из чего мы можем сделать вывод, что два этих тысячестрочных куска кода не будут проанализированы и сведены к, грубо говоря, к memset() ?
Да, я думаю, что в реальном мире этого не произойдет. Но ведь ничто не мешает, так ведь?