Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

csMaster - zdjęcie

csMaster

Rejestracja: 08.05.2016
Aktualnie: Nieaktywny
Poza forum Ostatnio: 09.04.2024 14:03
-----

Moje tematy

Szybkość add

12.11.2022 02:44

Który z tych fragmentów kodu wykonywałby się szybciej dla funkcji wykonującej się często?

...
new szData[256];
add(szData, charsmax(szData), "...");
add(szData, charsmax(szData), "...");
...
...
static szData[256];
szData[0] = 0;
addf(szData, charsmax(szData), "...");
addf(szData, charsmax(szData), "...");
...

public addf(szDest[], iLen, const szSource[]) {
	new start;
	while(start < iLen && szDest[start]) {
		++start;
	}
	if(start >= iLen) {
		if(start == iLen) {
			szDest[start] = 0;
		}
		return;
	}
	
	new i;
	while(start < iLen && szSource[i]) {
		szDest[start++] = szSource[i++];
	}
	szDest[start] = 0;
}

Głównie chodzi o to aby nie alokować za każdym razem pamięci od nowa poprzez słowo new, ale wykorzystać static. Tylko może funkcja addf() byłaby wolniejsza od standardowej add()?

Czas gry

06.11.2022 21:31

W którym miejscu znajduje się kod odpowiadający za czas gry graczy wyświetlany w przeglądarce serwerów? Jest to raczej w rehlds'ie, metamodzie czy amxx'ie?

W rehlds'ie znalazłem funkcję:

NOXREF void SVC_PlayerInfo(void)

Z tym że dodałem do niej Con_Printf() i nie wygląda mi na to żeby ta funkcja w ogóle się kiedyś wykonywała.

 

Wydaje mi się że powinno to być gdzieś w rehlds'ie, bo ten czas wyświetla się nawet przy wyłączonych dodatkach, ale nigdzie nie mogę tego znaleźć.

 

Socket HTTPS

09.06.2022 14:04

Czy istnieje jakikolwiek moduł socket'ów obsługujący HTTPS i TLS ?

Liczby większe niż 2^32

21.05.2022 15:34

Czy jeśli napiszę coś takiego:

new liczba = (1<<40);

Czy w zmiennej 'liczba' zostanie zapisana liczba 2^40 - czyli 1 099 511 627 776 ? To oczywiście więcej niż wynosi limit 32-bitowych zmiennych.

 

Jeśli nie to ogólnie czy jest jakiś sposób żeby zapisywać tak duże liczby ? Nie mówię o ich wyświetlaniu czy operacjach matematycznych, a tylko o zapisywaniu i operacjach bitowych. Celem tego miałoby być zapisywanie danych bez tworzenia tablic dynamicznych, np. przy zapisie skinów jakie ma gracz - 40 kolejnych bitów oznaczałoby 40 kolejnych skinów.

 

Wskaźniki

09.04.2022 18:20

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 ?