Вход
Наше всё
Теги
codebook
PARTS
Поиск
Опросы
Закон
Понедельник
12 апреля
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
ARM, RISC-V
AVR
PIC
PLD, FPGA, DSP
Кибернетика
Технологии
Схемы, платы, компоненты
Средства и методы разработки
/910125
Топик полностью
fk0
(14.03.2019 00:07, просмотров: 193)
в ответ на
computed goto опять нет, атомики только для hosted implementation. Древний косяк с функой clock() фиксить упорно не желают. Куды мир котится?
- автор:
LightElf
А какой косяк с функцией clock() ? Косяк был только у микрософта как всегда, у остальных так и написано: "процессорное время" (а не некое "физическое", или "календарное").
[ZX]
Ответить
Ответы
Косяк в том, что стандартный clock() бесполезен в 99% случаев, by design. Счетчик очень быстро переполняется и функа тупо возвращает -1. Потому многие реализации нарушают спецификацию и возвращают значение по модулю.
-
LightElf
(
14.03.2019 11:40 - 11:56
)
IMHO, косяк в том, что пытаются загнать в стандарт языка не операторы, но функции ввода-вывода. Эти потуги сродни "синдрому вахтера".
-
Vit
(
10.01.2021 22:19
)
На счет 99% ты за уши притягиваешь. У кого-то CLOCKS_PER_SEC порядка 1000 и им 32-битного клока хватит на 50 дней. Померять время работы программы запущенной на 5 минут -- хватит. А кому не хватит, для них есть
fk0
(262 знак.,
14.03.2019 13:29
)
Ну то есть это нормально, что стандартная функция по истечении времени просто перестает работать? Стандарт не ограничивает диапазон CLOCK_PER_SEC, хватает реализаций со значением 1000000, там переполнение за полчаса происходит. Стандартизаторов
LightElf
(132 знак.,
14.03.2019 13:45
)
И в чём проблема? Все знают, что clock() можно использовать на коротких интервалах времени. А зачем она на длинных? Она для профилирования ПО, условно, а не для измерения времени. Её вообще для измерения времени использовать НЕЛЬЗЯ (потому, что
fk0
(213 знак.,
14.03.2019 13:50
)
В том и дело, что не на "коротких интервалах", а на "коротком интервале от момента запуска программы". Т.е. профилировать можно только свежезапущенный процесс. Профилировать сложную, редко воспроизводимую проблему - нельзя.
-
LightElf
(
14.03.2019 13:57
)
Ты же сам говоришь -- берутся младшие биты по-модулю. Так что измерять можно в любой момент времени. Но измерения возможны только относительные, и только на коротком интервале. Наверное это не проблема. Кому вообще абсолютные нужны? И где
fk0
(318 знак.,
14.03.2019 23:59
)
Младшие биты по модулю - это то, что всем и нужно от clock(). Стандарту такое поведение противоречит. По стандарту "считаем до 0x7FFFFFFF и шабаш, дальше возвращаем -1" и хрен весь. Со
LightElf
(125 знак.,
15.03.2019 00:31 - 01:00
)