簡體   English   中英

將代碼從vb.net遷移到C ++ dll是否可以顯着提高性能?

[英]Does migrating code from vb.net to a C++ dll offer significant performance boosts?

我知道以前曾提出過類似的問題,但我相信我的具體情況相差很大,因此這可能是一個問題。 如果我錯過了另一個非常相似的問題,請為我鏈接。

我精通vb.net,但對c ++還是一個新手。 我在vb.net中有一個子程序,可以執行很多數學運算。 有一些三角函數和平方根等。要求不高, 大約有100個方程,它們必須運行數千次。

這是我所做的一些偽代碼:

Sub mathsub()
For i = 0 to arraylength
A = somenum(i) * othernum(i)
...
Next
End sub

因此,我在for循環中進行了數千次數學運算。 每次使用一堆數組的不同元素(somenum,othernum等)時,所有這些數組的長度都相同。

沒有任何一行代碼會花費很多時間(配置文件時,每行花費的時間可以忽略不計),但是所有程序花費的時間都比我想要的要長。 通過用c ++重寫該routeen並從vb.net引用它,我可以期望速度顯着提高嗎?

編輯#1-評論中問題的答案

該代碼每個數組元素花費的時間可以忽略不計, 但是大約有20,000個元素,而我需要這樣做大約10,000次(所以2億次-不開玩笑)。 總的來說,根據完成一小部分工作所需的時間,我估計大約需要18個小時。 整個程序也需要多次運行,盡管每次新運行都是100%獨立的。 我已經嘗試對代碼進行線程化,我有一個Ryzen 1800x 8核(16線程)處理器-我已經嘗試將任務拆分為15個線程(為開銷和其他活動留出1個線程),並使用parallel.for循環還沒有提供足夠的增長。 我不知道什么是AVX,但我將開始研究它,我從未編寫過C ++語言,但是數學本身只是簡單的方程式,我很樂意花幾天/幾周/幾個月學習實施,如果這真的會有所作為!

進行基准測試 沒有基准測試,沒有辦法知道 ,但是答案可能是“是”,因為C ++的性能概況與VB.NET等托管語言相比,但是JIT優化,托管到本地轉換,數組訪問順序/數據局部性,而一般的編碼技術都會在這里產生影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM