Jestem na 99% pewny, że format właśnie tak działa, dlatego da się podawać tablicę wyjściową jako dowolny parametr. Formatex dlatego jest szybszy i wydajniejszy, bo operuje na tablicy, którą dostaje, a nie tworzy nowej. Zamiast robić tak jak piszesz lepiej użyć format(), zrobi to samo, a mniej pisania.
Dokładnie tak jest.
Z drugiej strony nie popadajmy już w taką skrajność z tą optymalnością,funkcja wywoływana nie częściej niż raz na 5 sekund, w głupiej wtyczce do modu, do gry, która nie wymaga nawet giga procka i ćwierć giga ramu, a żyjemy w czasach, gdzie procesory w telefonach o prędkości taktowania 1GHz uważa się już za średnią półkę.
Wiadomo, że sztuka programowania oczekuje optymalizacji na każdym kroku, ale nie sądzę, żeby czas poświęcony na kombinowanie z format/formatex był współmierny do osiągniętej (bądz też niekoniecznie) optymalizacji.
Przy wykonywaniu kodu np. w pre_thinku może mieć to kolosalne znaczenie. Mimo tych nadmiarowych gigaherców serwer będzie wyraźnie lagował, bo przetworzenie każdej klatki będzie trwało dłużej. I pamiętaj, że ta nadmiarowa moc prawie nigdy się nie marnuje - możesz przecież postawić więcej niż 1 serwer na 1 maszynie.
co do formatex: proste studium przypadku:
formatex(zmienna, charsmax(zmienna), "%s cośtam", zmienna)
formatex działa na dokładnie tej samej tablicy, czyli nie robi jej kopii przed wykonaniem operacji, co więc zrobi w tym przypadku? Zastąpi zmienną zawartością zmiennej, czyli nic nie zrobi A następnie dopisze cośtam na końcu tej zmiennej, czyli wszystko zadziała prawidłowo...
formatex(zmienna, charsmax(zmienna), "cośtam %s", zmienna)
W tym przypadku najpierw wpisze do zmiennej na początku "cośtam " a następnie dopisze do tego zawartość zmiennej. Zakładając, że zmienna zawiera "abcdefghijklmnopqrstuvwxyz", otrzymamy: "cośtam cośtam ghijklmnopqrstuvwxyz", czyli nie do końca to, o co nam chodziło...
W skrajnych przypadkach kod taki może wejść w pętlę nieskończoną (gdy zmienna będzie zawierać %s).