>> А действительно, зачем?
> ... но они упорно предпочитают вбивать гвозди микроскопом х86 Трахать надо не чиподелов, а программеров, ибо они разжирели -
столько добра понапихали в проц - MMX, SSE, SSE2, SSE3,SSE4, AVX,
и всё это удовольствие от 2 вплоть до 6ГГц. А они пля...
Браузер 2 секунды грузится, Венда как минуту, на 386DX-2 в 95
году грузилась, так и в 2011 на Core i7 c 16 потоками.
А чё изменилась? Да них..я, как и в 95 народ пёрся от "суперреалистичной"
графики в Quake 1, на Trident c 1 Mб VRAM, так и сейчас пруться
от Call of Duty на Nvidia Fermi c 4 Gb DDR5. MS Word как тормозил везде,
так и тормозит, а что изменилось, да тоже ничего, юзер стал вместо
20 популярных функций Ворда использовать 25.
Это достижение 16 лет работы MS - Тормозим как всегда, глючим испокон веков,
стоим ещё больше, умеем так же, только "теперь банановый", тфу, теперь с SSE/3DNOW,
многотредовый и надо 2 Gb RAMы.
Если при анализе времени на разработку софта говоришь заказчику об оптимизации,
о профилировании, об анализе времени исполнения функций, расчётов сложностей алгоритма,
выявление баттл-неков, отлова утечек памяти, и т.д., на тебя смотрят как на идиота.
Программеры тоже хороши, вместо того чтоб подумать час на циклом, пихают:
if ( a = 11 ) { while( b < 1024) { my_func(a, b + a); b++; }}
if ( a = 16 ) { while( b < 1024) { my_func(a, b - a); b++; }}
if ( a = 19 ) { while( b < 1024) { my_func(a, b + a); b++; }}
if ( a = 21 ) { while( b < 1024) { my_func(a, b + a); b++; }}
if ( a = 34 ) { while( b < 1024) { my_func(a, b - a); b++; }}
if ( a = 55 ) { while( b < 1024) { my_func(a, b + a); b++; }}
if ( a = 72 ) { while( b < 1024) { my_func(a, b - a); b++; }}
if ( a = 91 ) { while( b < 1024) { my_func(a, b + a); b++; }}
Работает? Работает! Правильно? Правильно! Дай денег, пойду бухать! На, пиз...уй!
Вот вы тоже задумаетесь, вроде 11, 15, 19, 21, 24, 37, 47, 99 - в диапазоне от 0 до 100 никакой
закономерности в этом ряде нет, и даже иногда интерполяция порой не спасает.
Тогда и надо задуматься о природе этих чисел. В естественном мире они могут быть только от
генератора сл. чисел. Но для обработки результатов генератора не используют линейные алгоритмы.
Но кто-то ужо заметил, то что нечётная (а) складывается с (b) в my_func().
#define sign(x) (x > 0 ? 1 : -1)
if ( a % 2 ) {
while( b < 1024) {
my_func(a, b + a*sign(a % 2));
b++;
}
}
---
дальше понимаем, что if ( a % 2 ) ваще нах. не нужен.
while( b < 1024) {
my_func(a, b + a*sign(a % 2));
b++;
}
---
Дальше вспоминаем, что у на 8-ядреный проц.
И распердюливаем этот while по процам:
int cpu = 8;
#pragma omp parallel shared(a, cpu) private(b)
{
#pragma omp while schedule(dynamic, cpu)
while( b < 1024) {
my_func(a, b + a*sign(a));
b++;
}
}
// как-то так...
Итого: при a = 91, экономим 7 if_ов и 896 циклов простоя.
----
А ты всё интел говно, интел говно... Люди говно - жрать хотят ничего не делая.