View Single Post
Old 03/06/2016, 07:28 AM   #652
Untonyst
Big Clucker
 
Untonyst's Avatar
 
Join Date: Dec 2015
Posts: 66
Reputation: 9
Default Re: Коллекция функций / макросов

Quote:
Originally Posted by Mutha_X View Post
Те, что в ядре сравнивают только пару переменных (у автора почти произвольное кол-во, ограниченное макс числом аргументов функции), хотя их всё-равно можно вставить в его код.
PHP Code:
#define PROTECT_GETMAXMIN
GetIntMin(...) {
    new 
=  numargs()-1;
#if defined PROTECT_GETMAXMIN
    
if(i==-1){return 0;}
#endif
    
new val getarg(i);
    while(--
i) {val min(val,getarg(i));}
    return 
val;

GetIntMax(...) { 
    new 
=  numargs()-1;
#if defined PROTECT_GETMAXMIN
    
if(i==-1){return 0;}
#endif
    
new val getarg(i);
    while(--
i) {val max(val,getarg(i));}
    return 
val;

В таком виде при большом кол-ве итераций должен быть выигрыш по времени выполнения, т.к. меньше операций с памятью в пределах p-кода... хотя стоит проверить.

SoNikMells, твой код будет неадекватным в случае, если будут заданы только отрицательные числа.
Твоя функция сфейлилась на [10, 0, -5], но у меня и SoNikMells сфейлились на [-10, -2, -5].
__________________

GitHub account.
Untonyst is offline   Reply With Quote