←back to thread

257 points keepamovin | 5 comments | | HN request time: 0s | source
Show context
zh3 ◴[] No.44349227[source]
Seared into my soul is the experience porting a linux pipe-based application to Windows, thinking it's all posix and given it's all in memory the performance will be more or less the same. The performance was hideous, even after we found that having pipes waiting for a connection more or less ground windows to a halt.

Some years later this got revisited due to needing to use the same thing under C# on Win10 and while it was better it was still a major embarrassment how big the performance gap was.

replies(6): >>44349822 #>>44349883 #>>44349995 #>>44352604 #>>44354110 #>>44356780 #
1. SoftTalker ◴[] No.44349995[source]
Well POSIX only defines behavior, not performance. Every platform and OS will have its own performance idiosyncracies.
replies(1): >>44350398 #
2. klysm ◴[] No.44350398[source]
How on earth would POSIX define performance of something like pipes?
replies(3): >>44350455 #>>44352401 #>>44357801 #
3. SoftTalker ◴[] No.44350455[source]
I was addressing "it's all posix and given it's all in memory the performance will be more or less the same."

Not claiming that POSIX should or could attempt to address performance.

4. pjmlp ◴[] No.44352401[source]
By using Big O notation, or deadlines like on RTOS APIs, as two possible examples on how to express performance on a standard.
5. variadix ◴[] No.44357801[source]
Some standards do define performance requirements, e.g. operations on data structures, in BigO notation.