Performance results returned from Apache Bench by calling .Net API running on 5030 on local.
D:\httpd-2.4.55-o111s-x86-vs17\Apache24\bin>ab -n 1000 -c 10 http://localhost:5030/factorial?n=10
This is ApacheBench, Version 2.3 <$Revision: 1903618 $>
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
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: Kestrel
Server Hostname: localhost
Server Port: 5030
Document Path: /factorial?n=10
Document Length: 7 bytes
Concurrency Level: 10
Time taken for tests: 0.184 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 146000 bytes
HTML transferred: 7000 bytes
Requests per second: 5439.01 [#/sec] (mean)
Time per request: 1.839 [ms] (mean)
Time per request: 0.184 [ms] (mean, across all concurrent requests)
Transfer rate: 775.48 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 5
Processing: 0 2 0.9 2 9
Waiting: 0 1 0.9 1 8
Total: 0 2 0.9 2 9
Percentage of the requests served within a certain time (ms)
50% 2
66% 2
75% 2
80% 2
90% 2
95% 3
98% 5
99% 6
100% 9 (longest request)
Performance results returned from Apache Bench by calling Python API running on 8000 on local.
D:\httpd-2.4.55-o111s-x86-vs17\Apache24\bin>ab -n 1000 -c 10 http://127.0.0.1:8000/factorial/10
This is ApacheBench, Version 2.3 <$Revision: 1903618 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: uvicorn
Server Hostname: 127.0.0.1
Server Port: 8000
Document Path: /factorial/10
Document Length: 21 bytes
Concurrency Level: 10
Time taken for tests: 0.766 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 165000 bytes
HTML transferred: 21000 bytes
Requests per second: 1305.69 [#/sec] (mean)
Time per request: 7.659 [ms] (mean)
Time per request: 0.766 [ms] (mean, across all concurrent requests)
Transfer rate: 210.39 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 2
Processing: 3 7 3.6 7 41
Waiting: 2 6 3.5 6 41
Total: 3 8 3.6 7 41
Percentage of the requests served within a certain time (ms)
50% 7
66% 8
75% 8
80% 8
90% 9
95% 9
98% 11
99% 38
100% 41 (longest request)
C# (.NET Core with Kestrel)
- Requests per second: 5439.01 [#/sec]
- Time per request (mean): 1.839 ms
- Transfer rate: 775.48 Kbytes/sec
- Connection time (mean): 2 ms
- Longest request time: 9 ms
- Requests per second: 1305.69 [#/sec]
- Time per request (mean): 7.659 ms
- Transfer rate: 210.39 Kbytes/sec
- Connection time (mean): 8 ms
- Longest request time: 41 ms
- C#: 5439 requests per second.
- Python: 1305 requests per second.
- C# performs approximately 4 times better in terms of handling requests per second.
- C#: 1.839 ms per request.
- Python: 7.659 ms per request.
- C# responds more than 4 times faster per request compared to Python.
- C#: 775.48 KB/sec.
- Python: 210.39 KB/sec.
- C# has a significantly higher transfer rate, meaning it can handle more data throughput.
- C#: Median connection time is 2 ms with the longest request of 9 ms.
- Python: Median connection time is 7 ms with the longest request of 41 ms.
- C# is more efficient in handling individual request connections.
C# shows more consistent performance with minimal deviation, whereas Python shows some spikes, especially in the longest request time (41 ms).
C# with Kestrel significantly outperforms Python with FastAPI and Uvicorn in this benchmarking test.
- Higher requests per second.
- Lower time per request.
- Better data transfer rate.
- More consistent connection times.
For high-performance applications, especially when handling a large number of concurrent requests, C# provides better performance in this scenario.