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
 

Zdjęcie

Szybkość add


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
3 odpowiedzi w tym temacie

#1 csMaster

    Wszechwiedzący

  • Power User

Reputacja: 14
Początkujący

  • Postów:542
  • Lokalizacja:localhost
Offline

Napisano 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()?


  • +
  • -
  • 0

#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 988
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 16.11.2022 17:51

https://www.amxmodx....dx/get_gametimei sprawdź sam :D


  • +
  • -
  • 0

#3 csMaster

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 14
Początkujący

  • Postów:542
  • Lokalizacja:localhost
Offline

Napisano 18.11.2022 02:18

Próbowałem sprawdzić ale różnica w czasie była tak mała (0.000000s) że już sam nie wiem czy coś źle zrobiłem czy jak.

Napisałem temat, bo myślałem że ktoś potrafi to od razu stwierdzić.


  • +
  • -
  • 0

#4 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 381
Offline

Napisano 20.11.2022 16:03

zobacz tu jeśli chcesz mierzyć i profilować: https://forums.allie...ead.php?t=67752

 

 

Obecnie kod, który wykonuje AMXX jest JITowany, czyli podczas uruchamiania go jest kompilowany jeszcze raz (w locie), ale tym razem do kodu maszynowego.

Dwa snippety, które pokazałeś różnią się bardzo niewiele.

Alokacja miejsca (tablicy) na stosie to jest jedna instrukcja asemblera (https://raw.githubus...c/pawn-lang.pdf)

 

Czyli redukujesz instrukcje odpowiadające za alokacje bufora, ale dodajesz instrukcje, która zeruje pierwszy element tablicy.

 

W mojej opinii nie powinieneś się kompletnie przejmować wydajnością tych dwóch funkcji :) Ludzie, który tworzyli AMXX zrobili kawał dobrej roboty, żeby zapewnić dobrą wydajność.


  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych