... Я не хочу, чтобы функция или библиотека занимали 10 мс, чтобы получить время
Во-первых, вы преувеличиваете. System.nanoTime()
не занимает 10 миллисекунд.
Во-вторых, я не думаю, что в чистой Java есть более быстрый путь. Возможно, вы сможете быстрее получить доступ к системным часам из собственного кода, но ваш код будет зависеть от платформы. (Кроме того, мое внутреннее чувство таково, что System.nanoTime()
сделает это максимально быстро.)
Доступ к переменной может занять всего пару машинных инструкций, в зависимости от контекста и типа переменной, к которой вы обращаетесь. Это, вероятно, будет затоплено временем доступа системного таймера.
Кроме того, вставка вызовов метода в метод clock перед тем, как доступ к переменной может сделать доступ к переменной более длительным. Вызов метода может сделать недействительным содержимое регистров, в результате чего генератор кода вставит инструкции для повторного получения переменной из памяти.
Короче говоря, вставка кода для получения времени может привести к ненадежным и вводящим в заблуждение временным числам. Потенциально вы можете получить более значимые числа, рассчитав ДЛИННЫЕ последовательности инструкций ... но даже это может дать вам фиктивные числа, если вы допустите ошибки в своей методологии сравнительного анализа.