[英]How can I substitute a binary stream for a string stream, to avoid casting?
我目前正在研究將復雜的CGAL對象實例傳輸到其他進程的幾種方法。 在另一篇文章中,我詢問了自定義分配器,但是另一種方法是字符串流。 (FYI共享內存不是一種選擇)
當前的CGAL :: Nef_polyhedron_3提供iostreaming:
// In main process
Nef_polyhedron_3 NP3;
stringstream ss;
ss << NP3;
sendToOtherProcess(ss.str());
// In separate process
stringstream ss(stringFromOtherProcess);
Nef_polyhedron_3 NP3;
ss >> NP3;
現在,輸出流變慢,而輸入流變慢了四倍。
原因是(我猜)是全部演員。 可以在這里找到實現它的類: https : //github.ugent.be/divhaere/cgal/blob/master/include/CGAL/Nef_3/SNC_io_parser.h
僅摘錄班級成員之一的話(1481年):
in >> hx >> hy >> hz >> hw;
vh->point() = Point_3(hx,hy,hz,hw);
這樣做需要花費數千點。 在輸出端,它更快(不確定為什么會這樣)
有什么辦法可以提供某種二進制流,而不能完成所有轉換? 我知道一個人可以使用read(),write()以二進制形式寫入任何流,但我不能(輕松地)更改CGAL SNC_io_parser.h。 我想理想情況下,我希望能夠提供一種流,當被要求以兩種方式流式傳輸時(以任何一種方式)。
非常感謝任何幫助。
馬可斯
原因是(我猜是)所有的鑄造工作……這樣做要花數千點時間。 在輸出端,它更快(不確定為什么會這樣)
您可能希望在事件探查器下運行它,以便能夠確定何時花在哪里。
有什么辦法可以提供某種二進制流,而不能完成所有轉換?
您正在使用std::ostream
與operator<<()
和std::istream
與operator>>()
該序列運算類型和從文本和這種行為不能被改變的接口。
您可以復制Nef_polyhedron_3
的序列化函數,並使它們接受一些其他類型的序列化為二進制格式的流。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.