W amxx co prawda nie ma wskaźników takich jak w C++, ale są funkcje którymi można naśladować ich zachowanie:
get_var_addr(); get_addr_val(); set_addr_val();
Czy używanie tych funkcji w celu odwoływania się do zmiennych będzie szybsze niż ich normalny odczyt/zapis ?
Czy taki kod:
new Data[10000]; new pData = get_var_addr(Data); for(new i = 0; i < 10000; i++, pData += 4) { set_addr_val(pData, i); log_amx("%i", get_addr_val(pData)); }
wykona się szybciej o takiego ?
new Data[10000]; for(new i = 0; i < 10000; i++) { Data[i] = i; log_amx("%i", Data[i]); }
Teoretycznie skoro podaje adres zmiennej i potem go tylko zwiększam, to cała operacja powinna być szybsza niż gdyby serwer musiał sam szukać tych adresów. Ale get_var_addr() nie zwraca rzeczywistej pozycji zmiennej w pamięci serwera a jedynie jej lokalny adres, inny dla każdego pluginu. Do tego kompilator może stosować jakieś optymalizacje o których sam nie wiem. Więc właściwie czy wykorzystywanie tych trzech funkcji może w ogóle jakoś przyspieszyć wykonywanie kodu ?