О "виртуалке" 9 ГГц
- Войдите на сайт для отправки комментариев
Сб, 16/02/2019 - 14:35
Тут недавно в теме
Было сообщение:
А насчёт теста, ну, проведите. (очень условный тест)
#include <stdio.h> #include <time.h> void main() { clock_t begin = clock(); int a; for ( long i = 0; i < 1000000000; i++ ) { a = 2 + 2; } clock_t end = clock(); double time_spent = (double)(end - begin) / CLOCKS_PER_SEC; printf( "%.2f", time_spent ); }
gcc test.c && a.exe
Запустите сперва на своём компе, потом в виртуалке на нём же.
Это однопоточная программа, но в процессе выполнения ОС может перекидывать её на разные ядра (а может и не перекидывать), поэтому даже при выполнении несколько раз подряд на одном и том же компе результаты будут слегка разниться, ибо windows и linux - не ОСи реального времени.
Запустите потом на виртуалке "с 9 ГГц". Если ваш процессор быстрее, чем 2.26 ГГц, то вероятно, у вас результат посчитается быстрее, чем на той виртуалке.
Но вот любопытно, то покажет этот тест в немного измененном виде на "виртуалке" 9 ГГц.
#include <stdio.h> #include <time.h> void main() { clock_t begin = clock(); int a = 7; for ( long i = 0; i < 1000000000; i++ ) { if(a & 1) a = 3*a + 1; else a = a/2; } clock_t end = clock(); double time_spent = (double)(end - begin) / CLOCKS_PER_SEC; printf( "%d, %.2f", a, time_spent ); }
А, не даёт вам покоя-таки :)
Разумеется, может. При соблюдении определённых условий, понимая, что измеряем, и что результат будет в условных попугаях, но в том случае это приемлемо.
То же самое, что и мой - что процессор считает гораздо быстрее обращений к памяти, и что компилятор слишком умный.
Тогда уж можно вот так, чтобы for не размотался во что там хочет компилятор:
как освобожусь, потестирую...
Чтобы не забылось - компилировать: gcc -Wall -o test test.c
Один тест на локалке 1, 4.32 второй 10.62
Дык, нет смысла, понятно же, что при прочих равных, один поток на 2 ГГц сложит 2+2 медленнее, чем на 3 ГГц. В вашей ситуации этот "тест" был нужен, чтобы вы поняли, что нет там на виртуалке 9 ГГц.
Так виртуализация и задумывалась для многих целей, одна из которых обойти не умение писать программы работающие с потоками
Конечно же нет!!!
Ну вот, смотрите, имеем условный алгоритм из двух действий:
Второе действие никак не может выполниться, пока не будет выполнено первое - b для второго действия неизвестно, пока не будет выполнено первое. Ну вот никак. Даже если с помощью хитрых трюков разнести эти два действия на два потока, второй всё равно будет вынужден ждать, пока первый не рассчитает ему значение b, да ещё и будет вынужден понести накладные расходы на синхронизацию и передачу значения от первого потока второму.
а как работал Эльбрус?
Зовите кота с торшером, сейчас мы узнаем для чего на самом деле была задумана виртуализация.
Зовите кота с торшером, сейчас мы узнаем для чего на самом деле была задумана виртуализация.
да ладно )))
сдаётся мне, что виртуальная машина умеет выделять потоки под отдельные задачи...
ждём авторитетов ...
Точно так же. Просто хитрожопый компилятор пытается найти в исходном коде те куски, которые таки можно распараллелить. Но и х86й так умеет.
Простите, у меня на сегодня лимит на переваривание бреда заканчивается уже. Виртуальная машина всего лишь распределяет имеющиеся ресурсы настоящей машины на много маленьких виртуальных, изолируя их друг от друга (и то иногда получается плохо, и можно выйти из виртуалки в настоящую и выполнить код на хосте).
а что там за цифирьки магические получились?
где? ))
где? ))
запустил оба ваших теста на локалке - Один тест на локалке показывает - 1, 4.32 второй - 10.62
А теперь запустите оба там, на виртуалке с 9 ГГц, и сравните полученные цифры.
А теперь запустите оба там, на виртуалке с 9 ГГц, и сравните полученные цифры.
Первый тест 1, 4.49
Второй тест 7.91
На локальной 4 гиг озу проц двухядерный 3Ггц XUBUNTU 14 64x
На виртуалке 4 гиг озу одно ядро 2.23 (общая мощность виртуальной 9 Ггц) проц MINT18 32-х битная
ну, мейджик :)
Ничо не понял. Виртуалка, ядро одно 2.23, но общая мощность 9 - как это понимать вообще? Во втором запуске %d утерян в выводе. Где чистота эксперимента?
Капец какой-то, а не айти-отдел.
Хотя, по тайму - xubuntu обогнало mint.
А вот в 2+2 mint обогнал xubuntu аж на две секунды, магия )) Может, на хубунту что-нибудь было запущено?
test запускался этот пример:
test1 запускался этот пример:
На обоих машинах работает только ОСЬ
для чистоты эксперимента надо и на виртуалку поставить UBUNTU, да и машинёшку надо с поддержкой виртуализации, подумаю, попробую на HP поставить убунту и точно такую машину (по объему памяти) создать в виртуальной и сравнить...правда надо времени немного
Ничо не понял. Виртуалка, ядро одно 2.23, но общая мощность 9 - как это понимать вообще? Во втором запуске %d утерян в выводе. Где чистота эксперимента?
Капец какой-то, а не айти-отдел.
Хотя, по тайму - xubuntu обогнало mint.
ты мне льстишь, нету тут никакого IT отдела )))
Неужели кто-то из молодёжи будет заниматься такими глупостями коими занимаюсь я...
\Для пущего треша ещё и исходники разные взяты. Зачёт.
\Для пущего треша ещё и исходники разные взяты. Зачёт.
да, на двух машинах запускались оба теста...
первый тест на локалке показывает - 1, 4.32 второй тест на локалке - 10.62
В вашей ситуации этот "тест" был нужен, чтобы вы поняли, что нет там на виртуалке 9 ГГц.
да уже давно понял, архикад использовал возможности процессора в многопоточной обработке когда рэйндерил, это он умеет оказывается