台灣最大程式設計社群網站
線上人數
1147
 
會員總數:243311
討論主題:188091
歡迎您免費加入會員
討論區列表 >> C# >> 關於演算法及update control加速的問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
關於演算法及update control加速的問題
價值 : 100 QP  點閱數:586 回應數:6

樓主


初學者
90 48
761 103
發送站內信

目前有一大量 一維陣列相乘的演算法且算完結果後必需顯示在textbox上,上級要求每一次動作必需在10ms以下,
也用過背景來處理顯示textbox的方法但會發生顯示不是當下演算的結果,我想應該是不同步的關係。若加上
Application.Doevents()又會增加時間,目前自已有個想法請各位版上前輩指教

目前想嘗試用一維陣列改用指標的方式進行,不知有人怎道嗎? 真的這樣做有可能可以加速嗎?

或者不知前輩們有什麼更好的方法 ? 還請指教 !!

搜尋相關Tags的文章: [ 演算法及update control加速的問題 ] ,
本篇文章發表於2016-12-22 22:41
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

JoJo
檢舉此回應
如何:使用指標複製位元組陣列 (C# 程式設計手冊)
How to: Access an Array Element with a Pointer (C# Programming Guide)
本篇文章回覆於2016-12-23 10:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應


檢舉此回應
請教大大門用指標做 一維陣列 * 一維陣列
本篇文章回覆於2016-12-23 13:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

QOO
捐贈 VP 給 QOO 檢舉此回應
您好,有幾個不太理解的地方

1.您指的一維陣列相乘,意思是A[1]*B[1]~ A[n]*B[n] 還是A[1]*B[1],A[1]*B[2]...A[1]*B[m] ~ A[n]*B[1],A[n]*B[2]...A[n]*B[m]

2.每一動作10ms以下,這邊的一個動作是指兩個陣列的元素相乘就算一個動作,還是整個陣列相乘完畢視為一個動作

3.利用背景處理顯示textbox,這邊可能是多執行緒的使用,多少會不同步...但10ms以下的速度在執行,人類真的分辨得出來嗎?
本篇文章回覆於2017-01-04 14:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應


檢舉此回應
感謝Qoo大大回覆,10ms以下的速度,人類確實是無法分辨。但上面要求用陣列依序存數據及show在datagridview 上時,
若不同步則會發現資料錯誤了。感謝回覆
本篇文章回覆於2017-01-09 11:09
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
不錯的參考

QOO
捐贈 VP 給 QOO 檢舉此回應
您好,因為您提出的需求內容本身有點弔詭,所以才想跟您釐清,先弄清楚到底要達成什麼目標,你就知道程式該怎麼修改

1.基本上,就算您的程式完全如預期,每次的計算+顯示,都能在10ms內完成

10ms基本上是每秒100次更新的意思,這個更新頻率,也已經比正常螢幕的60Hz,75Hz要快了

程式做的完,您的螢幕也不一定能顯示,更別說人眼能辨識了


2.假設程式如預期的設計,但在沒有debug模式之下,使用者如何得知目前計算的陣列內容?

因為要能夠知道計算與顯示不同步的前提,就是使用者知道電腦當前計算的陣列是2x3,但顯示的內容卻是3x4


我個人覺得,原本使用多執行緒的方式處理是個適當的方式,由A執行緒計算,B執行緒顯示結果

即使不能做到10ms的同步,但只要A計算完,都透過B顯示(即能顯示的資料,一定是正確的)



當然,您若覺得唯一解還是得從技術面下手

可能還是得參考1樓大大的資料,或是等待其他資料結構的高手,提點一下更好的演算法

本篇文章回覆於2017-01-10 11:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應


檢舉此回應
Q大大及JoJo大大,感謝你們熱心的分享
本篇文章回覆於2018-04-24 20:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.