Это не точно "скрытые функции" и не очень полезное, но может быть чрезвычайно интересно в некоторых случаях:
Класс sun.misc. Небезопасный - позволит Вам реализовывать управление непосредственной памятью в Java (можно даже записать код Java самоизменения с этим при попытке много):
public class UnsafeUtil {
public static Unsafe unsafe;
private static long fieldOffset;
private static UnsafeUtil instance = new UnsafeUtil();
private Object obj;
static {
try {
Field f = Unsafe.class.getDeclaredField("theUnsafe");
f.setAccessible(true);
unsafe = (Unsafe)f.get(null);
fieldOffset = unsafe.objectFieldOffset(UnsafeUtil.class.getDeclaredField("obj"));
} catch (Exception e) {
throw new RuntimeException(e);
}
};
}
Если вы используете Vim 7.2.269 или новее, вы можете использовать параметр --startuptime.
vim --startuptime vim.log
из справки ( vim -h
):
--startuptime <file> Write startup timing messages to <file>
Вы можете запустить vim -V
, направить вывод через служебную программу, которая добавляет отметки времени и анализирует вывод. Эта командная строка делает это, например:
vim -V 2>&1 | perl -MTime::HiRes=time -ne 'print time, ": ", $_' | tee vilog
Возможно, вам придется вслепую набрать : q , чтобы вернуться к приглашению. После этого вы должны найти файл vilog
в вашем текущем каталоге с отметками времени hires в начале каждой строки.
Если вы можете сделать с точностью до секунды, вы можете сделать следующее:
vim -V 2>&1 | perl -ne 'print time, ": ", $_' | tee vilog
Если вы загружаете свои плагины из файла .vimrc, вы могли бы поместить q
в какую-то строку на полпути через файл, чтобы он закрылся. вы можете использовать таймер процесса, например команду unix time
. Более подробно это будет выглядеть так:
.vimrc
файл q
time vim
постоянно и среднее Это не изящно, но я думаю, что это выполнит свою работу.
Я усовершенствовал решение vim -V с помощью innaM, чтобы показать дельта-время:
vim -V 2>&1 | perl -MTime::HiRes=time -ne '$a = time unless defined $a; print time - $a, ": ", $_' | tee vilog