I do not argue no SIMD. See, .NET also has no coffee maker.
Sadly both of those are irrelevant for TRADING EXECUTION compared to data analysis. In execution basically:
* You get the orders incoming.
* Distribute them to one "subsystem" per instrument.
* Either queue them (ordered by price - for limit/stop orders)
* Or match them to the queued orders.
From there, executions need to be logged (obviously) and communicated back to the "terminals" (in a technical sense: end points).
In none of this would SIMD be used to any degree. So, nice statement - ireelevant still. With the high amount of work going on, though, the multi threaded architecture and avoidance of locks is more than paramount. There is a reason .net 4.0 indroces finally spinlocks - they are great for this scenario, and most developers are too stupid or ignorant to know the difference between a normal lock mechanism and a spinlock, so can not program one themselves
That being said, the garbage collector can be avoided (a lesson long lerned in Direct3d programming an embedded java, which incidentally has no garbage collector) by not creating garbage in the first place (structs are not garbage collected, and otherwise objects can be reused). Most developers in .NET sadly have no clue about high performance programming.
I stay to my words: this is most likely crap programmming going on there.
Sadly both of those are irrelevant for TRADING EXECUTION compared to data analysis. In execution basically:
* You get the orders incoming.
* Distribute them to one "subsystem" per instrument.
* Either queue them (ordered by price - for limit/stop orders)
* Or match them to the queued orders.
From there, executions need to be logged (obviously) and communicated back to the "terminals" (in a technical sense: end points).
In none of this would SIMD be used to any degree. So, nice statement - ireelevant still. With the high amount of work going on, though, the multi threaded architecture and avoidance of locks is more than paramount. There is a reason .net 4.0 indroces finally spinlocks - they are great for this scenario, and most developers are too stupid or ignorant to know the difference between a normal lock mechanism and a spinlock, so can not program one themselves

That being said, the garbage collector can be avoided (a lesson long lerned in Direct3d programming an embedded java, which incidentally has no garbage collector) by not creating garbage in the first place (structs are not garbage collected, and otherwise objects can be reused). Most developers in .NET sadly have no clue about high performance programming.
I stay to my words: this is most likely crap programmming going on there.