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)