-
- Косяк в том, что стандартный 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)
- Ты же сам говоришь -- берутся младшие биты по-модулю. Так что измерять можно в любой момент времени. Но измерения возможны только относительные, и только на коротком интервале. Наверное это не проблема. Кому вообще абсолютные нужны? И где fk0(318 знак., 14.03.2019 23:59)
- В том и дело, что не на "коротких интервалах", а на "коротком интервале от момента запуска программы". Т.е. профилировать можно только свежезапущенный процесс. Профилировать сложную, редко воспроизводимую проблему - нельзя. - LightElf(14.03.2019 13:57)
- И в чём проблема? Все знают, что clock() можно использовать на коротких интервалах времени. А зачем она на длинных? Она для профилирования ПО, условно, а не для измерения времени. Её вообще для измерения времени использовать НЕЛЬЗЯ (потому, что fk0(213 знак., 14.03.2019 13:50)
- Ну то есть это нормально, что стандартная функция по истечении времени просто перестает работать? Стандарт не ограничивает диапазон CLOCK_PER_SEC, хватает реализаций со значением 1000000, там переполнение за полчаса происходит. Стандартизаторов LightElf(132 знак., 14.03.2019 13:45)
- Косяк в том, что стандартный clock() бесполезен в 99% случаев, by design. Счетчик очень быстро переполняется и функа тупо возвращает -1. Потому многие реализации нарушают спецификацию и возвращают значение по модулю. - LightElf(14.03.2019 11:40 - 11:56)