und schon kommt die nächste Seltsamkeit, die ich mir nicht erklären kann:
FastCGI heißt ja nun mal so, weil der Aufruf gegenüber des normalen CGI schneller sein soll.
Da die meisten CGI in einer Scriptsprache (Perl, Python, PHP, ...) lässt sich das nachvollziehen, weil zum Ausführen des Codes ja auch immer der Interpreter mit geladen werden muss.
CGI in PB müssen nicht interpretiert werden, weil sie schon in kompilierter Version vorliegen. Somit fällt dieser Geschwindigkeitsnachteil durch das direkte Ausführen weg.
Nun habe ich mir einen kleinen Code gebastelt, der mir die Geschwindigkeitsunterschiede zwischen beiden Techniken zeigen soll (sowohl CGI als auch FastCGI ):
Code: Alles auswählen
EnableExplicit
InitNetwork()
Define Counter, z1, z2, z3
Define *Buffer
Define Url.s
; Url = "http://localhost/cgi-bin/cgitest.exe"
Url = "http://localhost/testfcgi/"
For Counter = 1 To 20
z1=ElapsedMilliseconds()
*Buffer = ReceiveHTTPMemory(Url)
z2=ElapsedMilliseconds()
If *Buffer
z3 + z2-z1
FreeMemory(*Buffer)
EndIf
Next
MessageRequester("!", Str(z3/20))
Das Ergebnis erschüttert mich ein wenig: Während der Zugriff auf CGI im Schnitt so um die 16 bis 18 Millisekunden dauert, lässt sich FastCGI fast eine Sekunde Zeit.
Dass man die Zugriffszeit auf das CGI nicht dramatisch verbessern kann, habe ich mir schon fast gedacht, aber dass FastCGI so eklatant langsamer sein soll, stimmt mich skeptisch. Habt Ihr 'ne Idee, was da so lange dauert? Vielleicht die Umleitung durch den ProxyPass?
Grüße ... Peter