Что ж, правильный ответ будет состоять в том, чтобы измерить его, но вы должны быть в состоянии угадать количество шагов ЦП, связанных с преобразованием строк и их прохождением, в поисках конечного маркера
Затем подумайте, каксколько операций FPU может выполнить ваш процессор, и насколько просто вычислить один журнал.
edit: тратить больше времени на утро понедельника: -)
String s = new Integer(t).toString();
int len = s.length();
Один изпроблема с языками высокого уровня состоит в том, чтобы угадать, сколько работы система делает за кулисами очевидного простого утверждения.Обязательный Joel link
Этот оператор включает выделение памяти для строки и, возможно, пару временных копий строки.Он должен проанализировать целое число и скопировать его цифры в строку, возможно, придется перераспределить и переместить существующую память, если число большое.Возможно, придется проверить кучу настроек локали, чтобы решить, использует ли ваша страна «,» или «.», Возможно, придется выполнить несколько юникодных преобразований.
Затем, чтобы найти длину, нужно снова просканировать всю строкуучитывая юникод и любые местные специфические настройки, такие как - вы говорите на правом-> левом языке?.
В качестве альтернативы:
digits = floor( log10( number ) ) + 1;
Только потому, что вам будет сложнее сделать это на бумагене значит, что это сложно для компьютера!На самом деле хорошее правило в высокопроизводительных вычислениях, по-видимому, таково: если что-то трудно для человека (динамическая динамика, 3D-рендеринг), это легко для компьютера, и если это легко для человека (распознавание лица, обнаружение голоса вшумная комната) это тяжело для компьютера!
Как правило, можно предположить, что встроенные математические функции log / sin / cos и т. д. - важная часть компьютерного дизайна на протяжении 50 лет.Поэтому, даже если они не отображаются непосредственно в аппаратную функцию в FPU, вы можете поспорить, что альтернативная реализация довольно эффективна.