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
 

[ROZWIĄZANE] callfunc vs natives


  • Zamknięty Temat jest zamknięty
2 odpowiedzi w tym temacie

#1 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 01.02.2013 19:40

Co szybsze?

callfunc_begin
#include <amxmodx>

public plugin_init(){
register_plugin("Caller callfunc_begin", "", "");

for(new i=0; i<10000000; ++i){
callfunc_begin("funkcja", "source.amxx");
callfunc_push_int(1);
callfunc_end();
}
}
date: Fri Feb  1 19:30:11 2013 map: de_dust
type | name | calls | time / min / max
-------------------------------------------------------------------
n | register_plugin | 1 | 0.000024 / 0.000024 / 0.000024
n | callfunc_begin | 10000000 | 7.686463 / 0.000000 / 0.016224
n | callfunc_push_int | 10000000 | 3.013483 / 0.000000 / 0.012970
n | callfunc_end | 10000000 | 4.354851 / 0.000000 / 0.005816
p | plugin_init | 1 | 9.546950 / 9.546950 / 9.546950
0 natives, 0 public callbacks, 1 function calls were not executed.


callfunc_begin_i
#include <amxmodx>

public plugin_init(){
register_plugin("Caller callfunc_begin_i", "", "");

new pluginid=find_plugin_byfile("source.amxx");
new funckjaid=get_func_id("funkcja", pluginid);
for(new i=0; i<10000000; ++i){
callfunc_begin_i(funckjaid, pluginid);
callfunc_push_int(1);
callfunc_end();
}
}
date: Fri Feb  1 19:30:11 2013 map: de_dust
type | name | calls | time / min / max
-------------------------------------------------------------------
n | register_plugin | 1 | 0.000002 / 0.000002 / 0.000002
n | find_plugin_byfile | 1 | 0.000001 / 0.000001 / 0.000001
n | get_func_id | 1 | 0.000000 / 0.000000 / 0.000000
n | callfunc_begin_i | 10000000 | 3.450782 / 0.000000 / 0.004586
n | callfunc_push_int | 10000000 | 3.004047 / 0.000000 / 0.005612
n | callfunc_end | 10000000 | 4.289036 / 0.000000 / 0.006016
p | plugin_init | 1 | 9.182475 / 9.182475 / 9.182475
0 natives, 0 public callbacks, 1 function calls were not executed.


natyw
#include <amxmodx>

native natyw(a);

public plugin_init(){
register_plugin("Caller native", "", "");

for(new i=0; i<10000000; ++i){
natyw(1);
}
}
date: Fri Feb  1 19:30:11 2013 map: de_dust
type | name | calls | time / min / max
-------------------------------------------------------------------
n | register_plugin | 1 | 0.000001 / 0.000001 / 0.000001
n | natyw | 10000000 | 4.071646 / 0.000000 / 0.005121
p | plugin_init | 1 | 3.184685 / 3.184685 / 3.184685
0 natives, 0 public callbacks, 1 function calls were not executed.


#2 MarWit

    The Chosen One

  • Przyjaciel

Reputacja: 843
Czempion

  • Postów:1 485
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Bystrzyca
Offline

Napisano 01.02.2013 21:44

callfunc > forward == callfunc_i > native, ale nie do końca. Patrząc na to jak wywoływana jest każda funkcja, przewagą natywów jest to, iż wysyłana jest tablica argumentów, a nie tak jak w callfuncu każdy z osobna. Drugą sprawą jest to, iż dla natywów id pluginu/funkcji są już przechowywane w pamięci i nie trzeba ich pobierać. Nie trzeba także używać funkcji początku/końca. Gdyby zrobić funkcję taką:
callfuncDirect( iPlugin, iFunction, 1 )

Łapę dałbym uciąć iż szybkość wykonania była by taka jak natywu bądź nawet większa ( gdyby zindexować pointery z załadowanymi pluginami w pamięci ( CPluginMngr::CPlugin ) ).

Użytkownik MarWit edytował ten post 01.02.2013 22:35
Masło maślane .

  • +
  • -
  • 1

marwit-0.png


#3 Gość_21977_*

  • Autor tematu
  • Gość

Reputacja: 0

Offline

Napisano 11.02.2013 17:11

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL




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

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