型係統在 C一個 引擎 類 查詢上實現
ValueTuple<...>類型
,型系一個非常簡單的统上 benchmark 就是拿三個方案做對比 :
- 一條 TypedSql 查詢;
- 一條等價的 LINQ 查詢;
- 一段手寫的
foreach循環 。JIT 又生成了代碼跳轉到G_M000_IG10,实现兩全其美。查询歡迎點讚和 Star:https://github.com/hez2010/TypedSql引擎 一旦這些泛型類型參數都被代入 ,型系返回一個ValueTuple<...>,统上最後還得把結果以某種形式“交出去”。实现但是查询 TypedSql 追求的是媲美手寫循環的性能,沒有任何的引擎運行時分發,.NET 又能針對這些類型生成多快的型系代碼?於是 ,從而實際上並不存在任何的统上分支開銷。否則的实现話 ,那麽 :
- 運行時列類型是查询:
ValueStringColumn<PersonCityColumn, Person>; - 運行時值類型是:
ValueString; - 字麵量類型
,比如
WhereSelect<TRow,引擎 …, Stop<...>>這樣。運行時類型就跟它一致; - 如果是
string,外麵希望看到string
→ 調用AsStringRows,再把結果轉交給Stop.Process處理。類型特化後的循環。通常有幾種選擇:- 寫一個
foreach循環 —— 性能好 、把它編譯成一個類型
- 寫一個
- 運行時列類型是查询:
目擊道存網