· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Перевод ТАКТЫ в СЕКУНДЫ (и наоборот)

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Дек 5, 2003 00:48:12

Интересный на мой взгляд вопрос! Производительность программы можно измерить
- в тактах
- в мили секундах

А вот есть ли формула по которой можно вычислить секунды по тактам или наоборот???


Дата: Дек 5, 2003 00:51:03

Дык секунды таки от проца зависят.
Чем больше частота тем быстрее будет, а такты всё те же :-)


Дата: Дек 5, 2003 00:55:16

Asterix
:-)))) Я про подсчет времени выполнения проги...


Дата: Дек 5, 2003 01:52:04

А что на процессоре что-то другое может выполнятся кроме проги :-)


Дата: Дек 5, 2003 02:01:43

Что есть частота процессора - это количество тактов в секунду,
какую тебе ещё нужно формулу?!
Правда есть ещё понятие MIPS(Million Instruction Per Second), и
оно вообще зависит от многих причин, но это не твой случай.


Дата: Дек 5, 2003 02:37:26

Asterix, вы нифига не правы -)
делаем так:
ExecutionTickCount/GetTickCountPerMilisecond();

ессно и то и другое нужно подсчитывать в рантайме -)
Кстати не забываем про кыш процессора и т.д. -)


Дата: Дек 5, 2003 05:03:57

GetTickCount - кол-во миллисекунд
а в тактах GetTickCount/19.2
....кажись так.....


Дата: Дек 5, 2003 08:21:49

Ну и где я не прав, я говорю что количество секунд/миллисекунд
будет зависеть от ТАКТОВОЙ частоты процессора.


Дата: Дек 5, 2003 10:50:40

Всё верно Asterix говорит.
Если у тебя проц работает на частоте 300 МГц, это значит
300 миллионов тактов в секунду. И это всё!


Дата: Дек 5, 2003 20:35:06

ну вы, блин, даёте...;))


Дата: Дек 5, 2003 23:19:56

Sm_Andrei
НУ ЛАДНО!!! А вот допустим взять кусок проги на асме и как тут определить!! На реальном куске программы??? К примеру милисекунды можно засеч при помощифункций!!! А вот как такты узнать??? по этим милиспекундам!!!??? Вот в чем вопрос!!!


Дата: Дек 6, 2003 01:40:27 · Поправил: Asterix

emergenter

Математику знаешь? ;-)
300000000 тактов - это в 1 сек
X тактов         - за 0.001 сек(это 1 милли секунда)

Простая пропорция
X=300000000*0.001/1=300000 тактов
т.е. 1 милли сек соответствует 300000 тактам для 300МГц проца.

Вот собственно и всё, если я в расчётах не ошибся :-)


Дата: Дек 6, 2003 07:28:55

emergenter

А rdtsc нельзя что ли использовать? По-моему, в этом случае (кусок программы на асме) ее вполне можно применить.


Дата: Дек 6, 2003 11:37:50 · Поправил: Sm_Andrei

emergenter
- Если ты согласен на погрешность в 300000 тактов(для 300МГц проца), то см. сообщение Asterix.
- Если тебе нужна точность подсчета скорости выполнения куска программы,тогда тебе надо считать такты, см. сообщение Hangatyr;
Я, например, считал такты через команды: rdmsr и wrmsr(у меня tasm команду rdtsc не знает):
mov ecx,10h ;выбираем регистр tsc
xor edx,edx 
xor eax,eax
wrmsr       ;записываем  edx:eax в tsc
...
...         ;здесь твой кусман проги
...
rdmsr       ;записываем содержимое tsc в edx:eax

Значение регистра tsc увеличивается на 1 каждый
такт проца. В результате в edx:eax получаешь число тактов
работы твоего куска проги.


Дата: Дек 6, 2003 12:03:47

Hangatyr

Ты не понял :-)
Тут вся фишка в том, что засёк человек такты с помощью rdtsc, а потом
хочет получить миллисекунды или наоборот.
Или, например, такая задача нужно рассчитать частоту проца, вот тогда
засёк такты и засёк время и уже можно вычислить частоту проца :-)

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.063