none
關於程式執行速度 RRS feed

  • 問題

  • 各位老師好

    因為目前我都是用vb 2005來幫公司開發程式

    公司目前是做自動化設備的

    也就是我是撰寫控制機械+擷取資料方面的

    我目前有一個疑問

    就是我用vb 2005 撰寫出來的程式

    執行速度會比用vb6 或是 其他 用c++寫出來的程式慢嗎?

    如果是這樣

    執行速度最快的程式語言是什麼呢?

    謝謝老師
    易耳易兒
    2009年10月5日 上午 08:31

解答

  • 邏輯對了就不會在乎速度差,基本上差不到兩倍,都是 1 點多倍

    最快的當然是組合,然後 C ,C++ 的類別已經開始龐大了,就開始慢下來,VB6 也有不錯的效能。VBNET / C# 速度相同,跟 VB6 差不了多少,有些資料寫比 VB6 快,我覺得主要是類別,VB6 對類別的效能大概比對一般變數的效能差 4 倍,.Net 已針對此部分最佳化,所以若是以類別為主的話,VB6 有點慘~

    當然還有一些編譯器號稱更快,那種要測過才知道。

    資料擷取效能大部分是硬體問題,一般硬體取樣率在 2 Hz 以下,隨便哪台爛電腦都足以應付。要配資料擷取卡的,通常取樣率都很高,超過 100 Hz 的,一定要配資料擷取卡,但是在高下去,牽扯到硬體通訊協定是否能達到這麼高,比如說很細的雷達資料高達每秒 4 gb ,就要配合磁碟陣列來存,這種根本來不及存,所以就不會用連續觀測,而是某個瞬時的結果...
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    • 已標示為解答 Lolota Lee 2009年10月12日 上午 05:18
    2009年10月5日 上午 08:51

所有回覆

  • 邏輯對了就不會在乎速度差,基本上差不到兩倍,都是 1 點多倍

    最快的當然是組合,然後 C ,C++ 的類別已經開始龐大了,就開始慢下來,VB6 也有不錯的效能。VBNET / C# 速度相同,跟 VB6 差不了多少,有些資料寫比 VB6 快,我覺得主要是類別,VB6 對類別的效能大概比對一般變數的效能差 4 倍,.Net 已針對此部分最佳化,所以若是以類別為主的話,VB6 有點慘~

    當然還有一些編譯器號稱更快,那種要測過才知道。

    資料擷取效能大部分是硬體問題,一般硬體取樣率在 2 Hz 以下,隨便哪台爛電腦都足以應付。要配資料擷取卡的,通常取樣率都很高,超過 100 Hz 的,一定要配資料擷取卡,但是在高下去,牽扯到硬體通訊協定是否能達到這麼高,比如說很細的雷達資料高達每秒 4 gb ,就要配合磁碟陣列來存,這種根本來不及存,所以就不會用連續觀測,而是某個瞬時的結果...
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    • 已標示為解答 Lolota Lee 2009年10月12日 上午 05:18
    2009年10月5日 上午 08:51
  • 建議你翻一翻資料結構教科書中,有關於 Big-O 的部份。
    它才是在程式碼中會影響速度的最大因素,也關係著你的資料結構,迴圈以及函數處理的方法。

    Big-O 愈小,程式速度就愈快。

    (以上不含硬體的處理速度,但通常硬體速度都很快)
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    如果只會用 "看" 的學程式,那不如早點改行,以免誤己一生...
    若不想快點得到解答,可以儘量把問題寫模糊一點,愈模糊愈不會得到解答。
    2009年10月5日 上午 08:57
    版主
  • 我想效能瓶頸比較可能出現在設備端, 而不是電腦端.
    因為設備端的CPU效能應該很少比的過PC. 通常都是你PC的程式在等設備, 而不是設備在等你的PC上的程式.
    學而不思則罔, 思而不學則殆.
    如果你一直都看不懂、不想學習看懂、抗拒看懂MSDN Library的話,那你最好放棄想要寫好程式這件事
    2009年10月5日 上午 09:16
    版主
  • 這就好比是

    我要到 市區  當然是 騎摩托車 比較快  且體積小不易被堵住

    但 若是  我要從 台中到台北  當然是 開車 比較快


    Cmf.Net (C) 2009
    2009年10月6日 上午 01:26
  • 各位老師好

    目前知道資料擷取硬體速度是夠快了

    只是我軟體這邊速度稍嫌不夠

    如果我是用For ...Next 迴圈來抓取資料

    如果我再For...Next 迴圈裡面使用 Application.DoEvent 子句

    對於速度會有幫助嗎?

    謝謝老師
    易耳易兒
    2009年10月6日 上午 04:10
  • 沒幫助,只有害而已。

    把資料擷取頻率、資料傳輸每秒鮑率列出來看看~


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年10月6日 上午 04:21
  • 老師好

    資料擷取頻率、資料傳輸每秒鮑率

    這要怎麼寫或測量?

    謝謝老師
    易耳易兒
    2009年10月6日 上午 04:42
  • 您的資料擷取器和控制器,廠商沒提供規格嗎?還有您的介面是什麼? PXI > PCI > USB > GPIB > RS232;如果您是用RS232,鮑率9600,那使用VC或VB,差距應該不大吧...
    2009年10月6日 上午 05:19
  • 頻率:次數/時間,例如 Hz 為每秒的次數
    鮑率:每秒的位元數,例如 9600 bps ,請同時列資料量與硬體限制。

    例如:每秒觀測兩次水位,以字串方式傳回。
    若字串長 16 字元,一般通訊是用 ANSI ,所以就是 16 bytes
    2 * 16  * 8 = 256 (bps)
    開啟通訊埠的參數是 9600 bps ,則資料流量 < 硬體流量,可正常擷取。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年10月6日 上午 05:20
  • 是資料擷取卡 PCI 介面 , 卡片有MAX : 100K Hz的速度 , 所以確定是硬體夠快


    易耳易兒
    2009年10月6日 上午 05:35
  • 我就是用I2C 也是跑在100KHZ
    還一邊用PGIB用多執行緒兩邊一起跑
    我還是用VC寫成的DLL  聽說DLL會拖的更慢
    結果還是一樣跑超快的
    程式速度也跟電腦配備有點關係吧
    我這台T6400  2.0GHZ

    2009年10月6日 上午 08:37