Каковы несколько трудоемких операций в C? - PullRequest
13 голосов
/ 15 июля 2009

Я ищу написать быструю тестовую программу, которую можно скомпилировать и запустить на разных машинах. Вместо того, чтобы использовать коммерчески / с открытым исходным кодом опции, я предпочел бы иметь свои собственные, чтобы поиграть с потоками и методами оптимизации алгоритма.

У меня уже есть пара, которую я использую, которая включает в себя рекурсивный расчет n-го числа последовательности Фибоначчи и подсев / ранд () несколько тысяч раз.

Существуют ли какие-либо другие алгоритмы, которые относительно просты, но в то же время требуют значительных вычислительных ресурсов (и, возможно, математических)?

(Обратите внимание, что эти операции будут реализованы на языке C.)

Ответы [ 14 ]

0 голосов
/ 15 июля 2009

Если вы хотите попробовать параллелизм, сделайте много математике. Размер вашей матрицы, которую вы можете использовать, будет ограничен памятью, но вы можете делать столько итераций, сколько захотите.

Это подчеркнет SIMD-инструкции, которые поставляются с современными процессорами.

0 голосов
/ 15 июля 2009

Оформить тесты из языковой перестрелки: http://shootout.alioth.debian.org/

Однако: эталонные тесты - это всего лишь эталонные тесты, которые не обязательно много говорят о реальном мире и, наоборот, могут вводить в заблуждение.

0 голосов
/ 15 июля 2009

Это делает много дополнений:

int c = 0; 
for (int n = 0; n < INT_MAX; n++)
    for (int m = 0; m < INT_MAX; m++)
        c++;

std::cout << c;
0 голосов
/ 15 июля 2009

Поиск простых чисел считается довольно трудоемким.

...