Skocz do zawartości
Dejv

[ROZWIĄZANY]Dla tych ogarniający język - szybkość/optymalność.

Rekomendowane odpowiedzi

Witam.

Mam malutkie pytanie odnośnie optymalności .

Czy lepiej zrobić super szybki timer, czy skorzystać z onplayerupdate tworząc super optymalny kod?

Z góry dziękuje za odpowiedź.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Każdy timer to osobny wątek a OnPlayerUpdate jest tak czy inaczej wywoływane dla gracza, który jest synchronizowany na serwerze.

To czy kod tam umieszczony jest optymalny czy nie to już inna sprawa. Na pewno nie można tam nadużywać (bo przecież używać można) funkcji operujących na plikach, bo wiąże się to z czasem dostępu do dysku, który może być zmienny albo funkcji operujących na bazie danych, ponieważ od momentu wysłania zapytania do uzyskania danych zwrotnych zapytania nie mija < 1 ms, a co za tym idzie wynik zapytania nie jest zwracany momentalnie tylko "kod musi sobie na niego poczekać" - Pawn jest strukturalnym językiem skryptowym, czyli kod jest wykonywany w jednym wątku albo w tylu wątkach ile zakodowano dla serwera SA-MP przez twórców - chodzi o callback-i.

Edytowane przez PrzMas

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Każdy timer to osobny wątek a OnPlayerUpdate jest tak czy inaczej wywoływane dla gracza, który jest synchronizowany na serwerze.

Wcale nie ma wątków, PAWN w SA-MP ma tylko i wyłącznie jeden wątek. Jeśli cokolwiek jest uruchamiane w innym wątku to jest to HTTP request i oczekiwanie na callback.

To czy kod tam umieszczony jest optymalny czy nie to już inna sprawa. Na pewno nie można tam nadużywać (bo przecież używać można) funkcji operujących na plikach, bo wiąże się to z czasem dostępu do dysku, który może być zmienny albo funkcji operujących na bazie danych, ponieważ od momentu wysłania zapytania do uzyskania danych zwrotnych zapytania nie mija < 1 ms, a co za tym idzie wynik zapytania nie jest zwracany momentalnie tylko "kod musi sobie na niego poczekać" - Pawn jest strukturalnym językiem skryptowym, czyli kod jest wykonywany w jednym wątku albo w tylu wątkach ile zakodowano dla serwera SA-MP przez twórców - chodzi o callback-i.

Całkowicie odradzam jakąkolwiek wysoką ilość operacji na plikach w krótkim czasie. czy to w timerach czy to w OnPlayerUpdate, na dodatek odpowiedzią na pytanie autora jest:

Wszystko zależy od wymagań, OnPlayerUpdate ma swój cel, tak samo mają timery, należy dopasować swój design kodu tak aby jak najlepiej rodzielić kod który ma jeden cel a drugi i wimplementować w odpowiednich callbackach. Autor kodu nie podaje ani jakie operacje robi więc akurat na to odpowiedzieć nie można.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Każdy timer to osobny wątek [...]

Wcale nie ma wątków, PAWN w SA-MP ma tylko i wyłącznie jeden wątek. (...)

[...] Pawn jest strukturalnym językiem skryptowym, czyli kod jest wykonywany w jednym wątku albo w tylu wątkach ile zakodowano dla serwera SA-MP przez twórców - chodzi o callback-i.

Na początku wypowiedzi dosyć luźno stwierdziłem, bo w taki sposób łatwiej jest to zrozumieć - chodzi o odrębność działania, a wątki sensu stricto programowania to inna sprawa.

PS
Zresztą...
Temat w swoim zakresie dotyczy ogólnego problemu, natomiast w tym dziale rozwiązuje się te konkretne, co wynika z stąd.

Edytowane przez PrzMas

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×