SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian

Reply
 
Thread Tools Display Modes
Old 21/02/2017, 05:00 PM   #61
MIASO
Big Clucker
 
MIASO's Avatar
 
Join Date: Dec 2011
Posts: 56
Reputation: 9
Default Re: Написание плагинов

Quote:
Originally Posted by White_116 View Post
Это не недочёт, это функция для разового применения и работает с текущим массивом. По факту она выполнит операции равной длине массива и скорость у неё линейна.
На счет линейной скорости не согласен. На обработку if..else или выборку из таблицы требуются такты процессора, а когда миллион повторений - это ощутимо занимает дополнительное время. Думаю каждый вызов ф-й с исходной строкой будет честнее.
MIASO is offline   Reply With Quote
Old 21/02/2017, 05:13 PM   #62
White_116
High-roller
 
Join Date: Sep 2010
Location: Russia/116
Posts: 1,481
Reputation: 69
Default Re: Написание плагинов

Не сильно, поменяло результат.

Processor: Intel Core I5 2500k @3.4GHz x4; Intel® Hyper-Threading Technology - No
RAM: DDR3 1333MHz 2GBx2 9-9-9-27
OS: Windows 7 64bit
__________________
White_116 is offline   Reply With Quote
Old 21/02/2017, 05:24 PM   #63
Gettopro
Big Clucker
 
Join Date: Oct 2011
Posts: 178
Reputation: 4
Default Re: Написание плагинов

PHP Code:
UpperToLower_orig результат1034 ms
UpperToLower_miaso     результат
882 ms
UpperToLower_dartfol     результат
971 ms
UpperToLower_Mutha_X результат
1372 ms
PAWN_UTL_White_116     результат
524 ms
PAWN_UTL_White_116_MACR результат
735 ms
PAWN_ToLowerString     результат
1628 ms 
system:
Intel CPU B980 @2.40GHz x2
8.0 GB ОЗУ
Win 8.1 x64
Gettopro is offline   Reply With Quote
Old 21/02/2017, 06:52 PM   #64
DartfoL
Gangsta
 
DartfoL's Avatar
 
Join Date: Apr 2012
Posts: 765
Reputation: 38
Default Re: Написание плагинов

Хорошо, а теперь давайте проверим работоспособность функций!

Итого имеем, что функция Mutha_X не работает вообще, а функция MIASO не работает с русскими символами. Получается, что на плюсах работает только оригинальная функция и моя. И в чём прикол замерять скорости в таком случае?
код http://pastebin.com/CjMn000n

Quote:
UPD: Не заметил, что кто то добавил в мою ф-ю delete[]string исправив тем самым косяк с утечкой памяти, убрал посколько ф-я была переписана.
Это был я
__________________
DartfoL is offline   Reply With Quote
Old 21/02/2017, 07:05 PM   #65
Diman777
Huge Clucker
 
Diman777's Avatar
 
Join Date: Aug 2011
Location: Ростов-на-Дону
Posts: 438
Reputation: 22
Default Re: Написание плагинов

Ржака однако)
Вот самая быстрая от White_116 походу
Diman777 is online now   Reply With Quote
Old 21/02/2017, 07:13 PM   #66
NarutoUA
Little Clucker
 
NarutoUA's Avatar
 
Join Date: Jun 2015
Posts: 8
Reputation: 0
Default Re: Написание плагинов

Щас пофикшу
NarutoUA is offline   Reply With Quote
Old 21/02/2017, 07:29 PM   #67
Diman777
Huge Clucker
 
Diman777's Avatar
 
Join Date: Aug 2011
Location: Ростов-на-Дону
Posts: 438
Reputation: 22
Default Re: Написание плагинов

Кстати заметил недочёт, вот например вижу такой код:
PHP Code:
void StringToLowerByTable_ASCII(char *string) {
    
int index = -1;
    while (
string[++index]) {
        
string[index] = chars_lower_ascii[string[index]];
    }
}

static 
cell AMX_NATIVE_CALL TP_StringToLowerByTable_ASCII(AMX *amxcell *params)
{
    
char *string;

    
amx_StrParam(amxparams[1], string);
    if (
string != NULL)
    {

        
StringToLowerByTable_ASCII(string);
    }
    else
    {
        
string "";
    }
    
cell *addr NULL;
    
amx_GetAddr(amxparams[1], &addr);
    
amx_SetString(addrstring00strlen(string));
    return 
1;

Функция StringToLowerByTable_ASCII по сути не нужна, лучше в тело TP_StringToLowerByTable_ASCII закинуть начинку. Лишний вызов функции получается. При замерах это должно сказаться.
Diman777 is online now   Reply With Quote
Old 21/02/2017, 07:31 PM   #68
DartfoL
Gangsta
 
DartfoL's Avatar
 
Join Date: Apr 2012
Posts: 765
Reputation: 38
Default Re: Написание плагинов

В теории компилятор должен убрать вызов и подставить функцию.
UPD: Проверил, так и есть
__________________
DartfoL is offline   Reply With Quote
Old 21/02/2017, 07:46 PM   #69
NarutoUA
Little Clucker
 
NarutoUA's Avatar
 
Join Date: Jun 2015
Posts: 8
Reputation: 0
Default Re: Написание плагинов

Проверяйте.
Code:
void UpperToLower(char *str)
{
    for (unsigned char ch = *str; ch; str++)
    {
        ch = *str;
        if ((ch >= 'A' && ch <= 'Z') || (ch > 191 /*А*/ && ch < 224 /*Я*/))
            *str += 32;
        else if (ch == 168 /*Ё*/)
            *str = 184;
    }
}
NarutoUA is offline   Reply With Quote
Old 21/02/2017, 09:03 PM   #70
Diman777
Huge Clucker
 
Diman777's Avatar
 
Join Date: Aug 2011
Location: Ростов-на-Дону
Posts: 438
Reputation: 22
Default Re: Написание плагинов

Quote:
Originally Posted by DartfoL View Post
В теории компилятор должен убрать вызов и подставить функцию.
UPD: Проверил, так и есть
Подставить функцию, что и будет сделано)
Для маленьких функций лучше использовать inline:
PHP Code:
inline void StringToLowerByTable_ASCII(char *string)
{
    
int index = -1;
    while (
string[++index])
    {
        
string[index] = chars_lower_ascii[string[index]];
    }

Он просто при вызове вставит лишь начинку (а может и нет, зависит от компилятора). Так что в исходнике поправьте это)
Diman777 is online now   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Разработка плагинов - как достать адресс функции? therainycat Русский/Russian 6 18/09/2013 08:45 PM


All times are GMT. The time now is 11:07 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.