Я разрабатываю математическую функцию и хотел бы проверить ее вывод при каждом значении с плавающей запятой в пределах диапазона. Я уже делал это на C++, но теперь хочу сравнить производительность с Java. Как перебрать все значения с плавающей запятой в Java?
В C++ я просто перебираю необходимый диапазон с целым числом без знака, а затем переинтерпретирую его как указатель с плавающей запятой.
float *x = reinterpret_cast<float*>(&i);
Однако как это можно сделать в Java? Желательно быстро, так как я проверяю производительность (без строковых решений, спасибо: D). Если нет быстрого способа, я думаю, я мог бы просто предварительно вычислить миллион из них в массив и выполнить итерацию по ним. Но это испортит производительность кеша, поэтому я думаю, что использование случайных чисел было бы лучше для моего случая, хотя это не совсем соответствует всем значениям.
float
через reinterpret_cast‹float *›(&i)` дляunsigned int
i
не является правильным способом переинтерпретации байтов в C++. Правильным способом, поддерживаемым стандартом C++, являетсяfloat x; std::memcpy(&x, &i, sizeof x);
, при условии, чтоfloat
иunsigned int
имеют одинаковый размер. - person Eric Postpischil   schedule 01.09.2018