Другие языки программирования и технологии

Функция clock(). Язык Си.

Почему то в цикле не считает нужным фиксировать время программы... Вроде все верно написал....
До цикла все окей, после цикла тоже. В цикле получаю бесконечность...
а ну спать ушел быстро!!!

может ??

то что в двух циклах size_t J(0) но скорее я не прав и даже не знаю что это значит.

а отладчиком смотрел да точно!!! сделай
j < 10
или j < 5 и посмотри отладчиком.
отладчиком можешь пользоваться?

я когда не мог делал так!!!
cout << переменная;
system(pause);
если хотел значение переменной или посмотреть что как работает.

ты че задал вопрос и спать убежал казнить на*****!!!!

че получилось?
Тахир Ниязбеков
Тахир Ниязбеков
3 061
Лучший ответ
Алекс Смирнов В цикле поменял j на k. Но не в этом дело. Отладчиком он мне и говорит что переменные инициализируются бесконечностью.... а вот это почему то работает. хотя логики нет. в цикле почему то не хочет фиксировать время
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define BUFFER 10
int main(void) {
unsigned start = clock();
unsigned box[BUFFER];
for (size_t i = 0u; i < BUFFER; ++i) {
for (unsigned long long j = 1ULL; j < 10000ULL; ++j) {
for (unsigned long long k = 1ULL; k < 20000ULL; ++k) {
unsigned long long temp = j * k;
if (temp == ULLONG_MAX) break;
}
box[i] = clock();
}
}
for (size_t i = 0u; i < BUFFER; ++i)
printf("%2u: %6.3fs\n", i + 1, (box[i] - start) / 1000.0F);
system("pause");
return EXIT_SUCCESS;
}
Сдаётся мне, компилер оптимизировал цикл, т. к. temp нигде не используется. Попробуй выключить оптимизацию. Или считай что-нибудь реальное: простые числа, например.
Алекс Смирнов Оптимизация отключена в настройках проекта. объявление темпа вынес за цикл а внутри сделал так чтобы темп накапливался и в конце вывел результат - не помогло. Вывод времени поставил внутри 3 цикла - тоже не считает.

Но если клок засунуть не в цикл то все считает... (((
Алекс Смирнов пзд тормоз...
Алекс Смирнов у меня счетчик инкрементируется и я обращаюсь не к тому элементу... Вот это реально пзд...
После записи в массив ты делаешь инкремент переменной counter, так что в ней теперь индекс следующего элемента, который ты ещё не записал. И именно этот не записанный элемент ты и выводишь:

T[counter] = clock(); counter++;
printf("Время работы программы = %u\n", T[counter]);

Либо делай инкремент после вывода, либо выводи T[counter - 1].
Я в джава не разбираюсь. Но мне кажется что это проблема оптимизации. Компилятор либо как то кэширует массив либо думает что зачем каждый раз обращаться к функции либо хз... Попробуй может быть volatile для массива T[].
Jakyp Tajibaev
Jakyp Tajibaev
15 398
Азиз Ахметов Красавчик!!!! Функция clock(). Язык Си.
Алекс Смирнов Это Си. Со спецификатором volatilite точно также...