Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Sergey Kubushin                      2:5020/400     08 Oct 2001  08:22:18
 To : Vladimir Mosgalin
 Subject : Re: несусветное поведение clock()
 -------------------------------------------------------------------------------- 
 
 Vladimir Mosgalin <Vladimir.Mosgalin@p17.f1041.n5030.z2.fidonet.org> wrote:
 
 > Hello Sergey.
 
 > 07 Окт 01 20:10, Sergey Kubushin wrote to Andrew Rodionoff:
 
 >  >> Greetings, all
 
 >  >> Hарод, я худею. Валял тут как-то простенькую приблуду на питоне и
 >  >> вдруг обнаружил, что time.clock() возвращает каждый раз одно и то же
 >  >> значение. Делаю программульку вида: #include <time.h> main() {
 >  >>     clock_t t;
 
 >  >>     while (1) {
 >  >>         sleep(1);
 >  >>         t = clock();
 >  >>         printf("%i\n",t);
 >  >>     }
 >  >> }
 >  >> Та же картина. Перепробовал ядра 2.2.5, 2.2.14, 2.2.19, glibc-2.1.1,
 >  >> 2.1.3-15, 2.1.3-22. Это же ужас. strace показывает, что буфер при
 >  >> вызове times(...) заполняется какой-то х-ней. У кого-нибудь такое
 >  >> было?
 
 >  SK> А чему ты, собственно, удивляешься? Компиллятор соптимизировал твою
 >  SK> программку. Ему-то откуда знать, что clock() каждый раз новое значение
 >  SK> возвращает?
 
 >  SK> Объяви свою переменную volatile и волосы станут шелковистыми. Именно
 >  SK> для этого оно и предназначено.
 
 > Бред какой-то. А почему он clock соптимизировал? А если бы там что-то другое
 > было? Тогда как он догадался, что sleep оптимизировать не надо?
 
 Потому что sleep() не возвращает значения. А соптимизировал он не clock(), а
 оператор присваивания, повторяющийся в цикле.
 
 Это достаточно частая ошибка (например, при определенной оптимизации не
 будет работать цикл, читающий что-то из памяти и проверяющий не изменилось
 ли значение). Hо здесь таки да, может быть и то, что просто процессор ничего
 не наработал, поэтому clock() действительно возвращает одинаковое значение.
 Хотя это и не освобождает от необходимости использования модификатора
 volatile - одна и та же программа может работать по-разному в зависимости от
 цифирки после -O, от наличия -g и т.п. Использование volatile позволяет
 этого избежать.
 
 - ---
 Sergey Kubushin        Sr. Unix Administrator
 Metavante, Inc.        Phone:  702-567-8857
 874 American Pacific Dr,   Fax:   702-567-8808
 Henderson, NV 89014
 --- ifmail v.2.15dev5
  * Origin: Metavante, Inc. (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 несусветное поведение clock()   Andrew Rodionoff   07 Oct 2001 00:00:56 
 Re: несусветное поведение clock()   Sergey Kubushin   07 Oct 2001 20:10:09 
 несусветное поведение clock()   Vladimir Mosgalin   08 Oct 2001 00:05:50 
 Re: несусветное поведение clock()   Sergey Kubushin   08 Oct 2001 08:22:18 
 Re: несусветное поведение clock()   Alexander Dilevsky   08 Oct 2001 10:31:21 
 несусветное поведение clock()   Valentin Nechayev   08 Oct 2001 18:16:51 
 несусветное поведение clock()   Kirill Frolov   08 Oct 2001 21:15:44 
 Re: несусветное поведение clock()   Andrew Rodionoff   09 Oct 2001 02:10:02 
 несусветное поведение clock()   Anthony Nedviga   07 Oct 2001 19:27:07 
 Re: несусветное поведение clock()   Andrew Rodionoff   09 Oct 2001 02:10:05 
 Re: несусветное поведение clock()   Alexander Dilevsky   07 Oct 2001 21:37:13 
 Re: несусветное поведение clock()   Andrew Rodionoff   09 Oct 2001 02:10:03 
 Re: несусветное поведение clock()   Valentin Nechayev   08 Oct 2001 18:23:00 
 Re: несусветное поведение clock()   Andrew Rodionoff   09 Oct 2001 02:10:03 
 несусветное поведение clock()   Peter Irich   08 Oct 2001 23:48:16 
 несусветное поведение clock()   Alexander Stavitsky   09 Oct 2001 01:35:31 
Архивное /ru.linux/75916b30c689.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional