我正在研究如何將現有的混合Python/C++數字代碼庫轉變爲混合的Scala/C++(理想情況下大多數情況下是Scala)。我期望最大的問題是打包結構數組。例如,在C++中,我們有類型,如快速打包Scala結構數組
Array<Vector<double,3>> # analogous to double [][3]
Array<Frame<Vector<double,3>>> # a bunch of translation,quaternion pairs
這些可以Python和C++之間轉換來回不復制由於numpy的。 (1)爲每個結構創建(1)盒裝的Scala類型,例如Vector<double,3>
和(2)類型化的薄層包裝在Array[Double]
周圍,知道它應該是什麼結構,並根據需要創建/消費盒裝單身人士。
是否有任何現有的庫可以執行這樣的事情,或者爲結構化的數組結構實現任何替代方法?有沒有人對性能特徵可能會有什麼經驗,以及現有編譯器和JVM是否能夠優化至少非多邊形密封機箱中的盒子?
請注意,打包和漂亮打字不是可選的:如果沒有打包,我會很快打開內存,如果我只有Array [Double] C++的類型系統(不幸)獲勝。
使用值類,你可以對這個技巧進行變化,並且非常接近C perf – bwawok