· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.A&O —› Оптимизация выборки

<< . 1 . 2 .

Посл.отвђт Сообщенiе


Дата: Июн 23, 2004 01:01:17

Если константа, то и так понятно
А если степень 2, то функцию можно вызывать рекурсивно, а для определения outputSize использовать сдвиги (сам outputSize хранить в регистре)


Дата: Июн 23, 2004 01:02:16

Или вообще хранить не outputSize, а log2(outputSize)


Дата: Июн 23, 2004 01:07:44

М-хм... Но цикл-то ведь будет повторяться столько же раз, сколько повторялись прежние два.
Да, можно использовать оптимизацию, например, еще вынести i/outputSize и outputSize*2 за тело вычислений, но много ли это даст?


Дата: Июн 23, 2004 01:22:19

А как иначе заполнить массив Array[n] меньше, чем за n проходов? Можно, конечно, за один проход заполнять несколько элементов массива, но много ли это даст? Тем более что самым узким местом наверняка будет доступ к памяти, а не вычисление. Ведь чтобы разложить такой пирамидкой массив 1024x1024 DWORD'ов нужно (1024*1024+512*512+256*256+128*128+64*64+32*32+16*16+8*8+4*4+2*2+1*1)* (SIZEOF(DWORD)) = 1398101*4 = 5592404 ~ 5,33 MB
Да и сколько раз в секунду придётся раскладывать массив?
Единственное, что можно сделать — переделать массив в виде
struct Large_Array{
Medium_Array Childs[4];
}
struct Medium_Array{
Small_Array Childs[4];
}
...
Но тогда чтобы использовать эти массивы с любыми API придётся их перегруппировывать


Дата: Июн 23, 2004 17:44:04

Массив можно сделать и BYTE. Тогда все будет проще. Ведь так???
Что можно сделать если изначально дана ссылка на массив 1024 x 768 х 1 (последняя цифра это размер элемента)???
Можно конечно добавить в конец еще массив 1024х256 с нулями, но я уверен что можно что нибудь придумать.
Loger массив придется раскладывать как минимум 30-40 раз в секунду. Хотя я слышал что некоторые умельцы испоьзуют один и тот же массив по нескольку раз, что несомненно дает прирост производительности...

<< . 1 . 2 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.045