Неспособность перенаправить запросы к localhost в VM к localhost хоста теперь испеклась в к Windows ( https://tools.ietf.org/html/rfc6761#section-6.3), включая VM's, доступный в , https://developer.microsoft.com/en-us/microsoft-edge/tools/vms /
Для безопасности обосновывает, что Microsoft теперь предотвращает записи файла хоста для переопределения адреса localhost к чему-либо кроме петлевого адреса:: 1. Так добавление строки файл хоста VM такой как
10.0.2.2 localhost
будет проигнорировано.
существует два пути (что я знаю о) для переопределения этого:
1) использование NETSH к portproxy к хосту
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=8000 connectaddress=10.0.2.2 connectport=8000
(то, где 10.0.2.2 шлюз по умолчанию на VM и 8000, является портом, к которому Вы хотите решить на хосте.)
2) Установка IIS, чтобы выполнить Маршрутизацию Запроса приложения и затем переписать запросы на localhost:port к hostIP:port
Взгляните на clock_gettime
, который обеспечивает доступ к таймерам с высоким разрешением.
Если вы используете архитектуру x86 / x64 и работаете на одном процессоре, вы можете рассмотреть возможность чтения счетчика отметок времени на CPU, чтобы получить счетчик циклов. В Википедии есть дополнительная информация . Обратите внимание, что этот подход менее полезен, если ваше приложение работает на нескольких процессорах, поскольку каждый процессор будет иметь свой собственный TSC. Также будьте осторожны с масштабированием частоты, если решите, что хотите преобразовать циклы -> единицы времени.
Да, gettimeofday () будет достаточно, если вы хотите узнать фактически истекшее время. Если вам нужно узнать время процессора, вы можете использовать clock (). Во многих случаях оба подхода дадут аналогичный результат (если в коде нет режима сна или какого-либо ожидания). Пример clock () можно найти здесь:
http://www.cs.utah.edu/dept/old/texinfo/glibc-manual-0.02/library_19.html
Если ваше ядро поддерживает gettimeofday ()
как vsyscall (виртуальный системный вызов), то его использование будет быстрее, чем вызов обычного системного вызова, такого как clock ()
. См. презентацию Андреа Арканджели для получения некоторой информации о том, как работают vsyscalls.
Я бы получил время процессора через clock ()
из time.h
. Чтобы получить полезные значения, конвертируйте в миллисекунды через CLOCKS_PER_SEC
:
clock_t start = clock();
// [...]
clock_t end = clock();
unsigned long millis = (end - start) * 1000 / CLOCKS_PER_SEC;
Немного позднее добавление, однако временная функция, доступная в любом Linux / Unix, может быть более легким способом достижения того, что вы хотите. Вот 2 примера
time ls -l stuff*
ls: stuff*: No such file or directory
0.01s real 0.00s user 0.00s system
time -c run_script.csh`
...
real 1m22.38s
user 0m14.67s
sys 0m1.06s