I haven't done extensive tests, but after using httpd and php -S a fair amount for local development, httpd seems to be the winner in performance:
httpd:
❯ ab -n 500 -c 10 http://kafes.local/index.php/Special:BlankPage
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking kafes.local (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Finished 500 requests
Server Software: Apache/2.4.39
Server Hostname: kafes.local
Server Port: 80
Document Path: /index.php/Special:BlankPage
Document Length: 50625 bytes
Concurrency Level: 10
Time taken for tests: 45.375 seconds
Complete requests: 500
Failed requests: 342
(Connect: 0, Receive: 0, Length: 342, Exceptions: 0)
Total transferred: 25449234 bytes
HTML transferred: 25242234 bytes
Requests per second: 11.02 [#/sec] (mean)
Time per request: 907.493 [ms] (mean)
Time per request: 90.749 [ms] (mean, across all concurrent requests)
Transfer rate: 547.72 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 236 893 188.4 860 1420
Waiting: 205 804 178.2 778 1407
Total: 236 893 188.4 860 1420
Percentage of the requests served within a certain time (ms)
50% 860
66% 930
75% 997
80% 1054
90% 1190
95% 1258
98% 1324
99% 1416
100% 1420 (longest request)php -S:
❯ ab -n 500 -c 10 http://localhost:8888/index.php/Special:BlankPage
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Finished 500 requests
Server Software:
Server Hostname: localhost
Server Port: 8888
Document Path: /index.php/Special:BlankPage
Document Length: 51357 bytes
Concurrency Level: 10
Time taken for tests: 203.485 seconds
Complete requests: 500
Failed requests: 499
(Connect: 0, Receive: 0, Length: 499, Exceptions: 0)
Total transferred: 25502981 bytes
HTML transferred: 25320981 bytes
Requests per second: 2.46 [#/sec] (mean)
Time per request: 4069.707 [ms] (mean)
Time per request: 406.971 [ms] (mean, across all concurrent requests)
Transfer rate: 122.39 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 1
Processing: 395 4017 675.9 3881 7155
Waiting: 389 4004 674.6 3872 7150
Total: 395 4018 675.9 3881 7155
Percentage of the requests served within a certain time (ms)
50% 3881
66% 4060
75% 4213
80% 4369
90% 4718
95% 5180
98% 5968
99% 6691
100% 7155 (longest request)