999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

JavaScript與MATLAB的計(jì)算性能差異對(duì)比研究

2016-11-30 15:26:21龐聰杜瑞林王磊賀克鋒龍坤羅棋
計(jì)算機(jī)時(shí)代 2016年10期
關(guān)鍵詞:計(jì)算機(jī)

龐聰 杜瑞林 王磊 賀克鋒 龍坤 羅棋

摘 要: 由于JavaScript具有跨平臺(tái)性和免安裝、輕量級(jí)等優(yōu)點(diǎn),已經(jīng)實(shí)現(xiàn)線性代數(shù)、無約束優(yōu)化、信號(hào)處理等數(shù)學(xué)計(jì)算,其在未來的“瘦客戶端”領(lǐng)域會(huì)有很大的應(yīng)用空間。分析了JavaScript和MATLAB的數(shù)值數(shù)據(jù)類型特點(diǎn),對(duì)比測(cè)試了兩種語言在不同迭代次數(shù)情況下、不同計(jì)算機(jī)上執(zhí)行的計(jì)算結(jié)果差異,并根據(jù)測(cè)試得出結(jié)論:JavaScript比MATLAB的迭代計(jì)算結(jié)果更加精確,運(yùn)行速度也更快;MATLAB的計(jì)算結(jié)果幾乎不受計(jì)算機(jī)配置影響,而JavaScript的運(yùn)行情況容易受計(jì)算機(jī)配置影響,這是因?yàn)闉g覽器的運(yùn)行受到了計(jì)算機(jī)內(nèi)存等的影響。

關(guān)鍵詞: JavaScript; MATLAB; 處理時(shí)間; 數(shù)據(jù)精度; 迭代; 計(jì)算機(jī)

中圖分類號(hào):TP393;TP311 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2016)10-05-03

Comparative study of computational performance between JavaScript and MATLAB

Pang Cong1, Du Ruilin1, Wang Lei1, He Kefeng1, Long Kun2, Luo Qi1

(1. Institute of Seismology, CEA, Wuhan, Hubei 430071, China; 2. Wuhan University, School of economics and management)

Abstract: Because JavaScript has the advantages of cross-platform, installation-free and lightweight, the mathematical computation such as linear algebra, unconstrained optimization, signal processing etc. has been realized by it, and it will have a lot of application space in the future of "thin client" field. The characteristics of JavaScript and MATLAB numeric data types are analyzed in this paper. Comparison test of the two different languages is made by the computational results performed in different times of iteration, and on different computers. The test results show that JavaScript iterative calculation results are more accurate than MATLAB, and the running speed is also faster; The result of MATLAB is almost not affected by the configuration of the computer, but the operation of JavaScript is easy to be affected by the configuration of the computer, because the browser's operation is affected by the computer memory etc.

Key words: JavaScript; MATLAB; processing time; data precision; iteration; computer

0 引言

科研人員與研究生在進(jìn)行數(shù)值仿真時(shí)一般采用MATLAB進(jìn)行數(shù)學(xué)計(jì)算,其完美的數(shù)據(jù)工具箱幾乎囊括了所有主流數(shù)學(xué)類計(jì)算算法和仿真,但在處理大量數(shù)據(jù)時(shí),運(yùn)行時(shí)間過長(zhǎng),并且MATLAB的功能完善也需要客戶端軟件的升級(jí)拓展。

JavaScript的代碼執(zhí)行不依賴專有軟件,而是跨平臺(tái)的在支持瀏覽器的系統(tǒng)上運(yùn)行,即有瀏覽器的PC、移動(dòng)端都可以支持JavaScript的執(zhí)行。這也免除了專有軟件安裝升級(jí)的煩惱[1]。

本文分析討論了JavaScript與MATLAB的數(shù)據(jù)類型特點(diǎn),并在不同迭代次數(shù)條件下和不同計(jì)算機(jī)配置環(huán)境下,分別對(duì)比了JavaScript和MATLAB的計(jì)算性能狀況,計(jì)算特性包括數(shù)據(jù)的結(jié)果精度和最終處理時(shí)間(ms)。

1 JavaScript

JavaScript的數(shù)據(jù)類型主要分為字符串、對(duì)象、Null、數(shù)組、數(shù)字、Undefined等。數(shù)字類型(number)可以用于數(shù)學(xué)運(yùn)算,但是它只有一種數(shù)字類型,這是由JavaScript的寬松型特性決定的,在具體的計(jì)算中數(shù)字可以選擇是否帶小數(shù)點(diǎn)。

isNaN用來檢測(cè)數(shù)據(jù)對(duì)象是否為數(shù)值內(nèi)數(shù)據(jù),NaN表示Not a Number,如果檢測(cè)的結(jié)果為false,就說明是數(shù)值數(shù)據(jù),例如alert(isNaN(78)),結(jié)果返回false。其中,字符串類型的數(shù)值也可以通過isNaN自動(dòng)轉(zhuǎn)換為number[2]。

JavaScript支持拓展各種計(jì)算庫(library)。例如number.js是一個(gè)用于服務(wù)器端的插件,支持復(fù)數(shù)、數(shù)字信號(hào)處理DSP、微積分、矩陣運(yùn)算、統(tǒng)計(jì)等;而numeric.js支持無約束優(yōu)化、ODE求解、線性代數(shù)、稀疏矩陣等。通過庫的拓展,JavaScript可以支持許多MATLAB也支持的算法[3]。

2 MATLAB

MATLAB的運(yùn)算基礎(chǔ)是矩陣計(jì)算,在操作中的指令輸入方式明顯不同于C、Java等高級(jí)程序語言,而是更加人性化的界面體驗(yàn),支持各種算法工具箱用于拓展。它在工程優(yōu)化、數(shù)值計(jì)算、系統(tǒng)仿真、圖像處理等方面有著重要應(yīng)用,不僅在經(jīng)濟(jì)學(xué)、地球科學(xué)受到重視,在機(jī)械工程、統(tǒng)計(jì)學(xué)等學(xué)科都有其存在的意義[5]。

MATLAB支持的算法非常多,主要有十種:最優(yōu)化設(shè)計(jì)、網(wǎng)格算法、數(shù)據(jù)離散化、線性規(guī)劃、圖論算法、數(shù)據(jù)擬合、數(shù)值分析、圖像處理算法、動(dòng)態(tài)規(guī)劃、蒙特卡洛算法等[6]。

MATLAB的數(shù)值類型主要分為雙精度、單精度、無符號(hào)、有符號(hào)等。具體的分類情況如表1所示。

3 實(shí)驗(yàn)對(duì)比分析

3.1 同一計(jì)算機(jī)上不同迭代次數(shù)的計(jì)算性能對(duì)比

我們首先利用一系列常用的編程軟件對(duì)比測(cè)試,測(cè)試的結(jié)果包括計(jì)算精度和運(yùn)行時(shí)間。JavaScript測(cè)試代碼具體過程如下:首先定義初始變量x=4.237,y=0;利用for循環(huán)實(shí)現(xiàn)函數(shù)式y(tǒng)=y+x*x迭代100000000次;函數(shù)的每一次迭代后i都自動(dòng)累加一次。然后創(chuàng)建函數(shù)運(yùn)行時(shí)間測(cè)量函數(shù)test(),包含兩個(gè)時(shí)間監(jiān)測(cè)點(diǎn):開始時(shí)間函數(shù)Date().getTime()和結(jié)束時(shí)間函數(shù)Date().getTime(),放置在函數(shù)內(nèi)部首尾兩端;最后在test()內(nèi)部運(yùn)行for循環(huán)迭代,時(shí)間監(jiān)測(cè)點(diǎn)函數(shù)的差值就是函數(shù)運(yùn)行時(shí)間。

MATLAB具體的測(cè)試過程如下:首先在運(yùn)算代碼的首位放置計(jì)時(shí)器tic和toc,tic表示從此時(shí)開始計(jì)時(shí),toc表示計(jì)時(shí)到此結(jié)束;設(shè)置函數(shù)初始值x=4.237;y=0;i=0;利用while循環(huán)在條件i<100000000時(shí)運(yùn)算停止,迭代函數(shù)為y=y+x*x;同時(shí)函數(shù)每迭代一次,i就累加一次;最后end結(jié)束迭代過程。

MATLAB和JavaScript在同一計(jì)算機(jī)上不同迭代次數(shù)的計(jì)算性能對(duì)比結(jié)果如表2所示。

單獨(dú)看待JavaScript的不同迭代次數(shù)對(duì)比結(jié)果表明:數(shù)據(jù)長(zhǎng)度都在16位左右,結(jié)果的精確度可以保留在小數(shù)點(diǎn)后第11位,比較理想的保留了數(shù)據(jù)結(jié)果的有效數(shù)位;迭代10000次的時(shí)間1Ms明顯比100000000次的232Ms短很多,迭代100000000次的時(shí)間不足1s證明JavaScript的運(yùn)行速度較快。

MATLAB的兩次計(jì)算情況也說明了迭代次數(shù)的較大差異直接影響運(yùn)行時(shí)間的較大延長(zhǎng);計(jì)算結(jié)果則是以科學(xué)計(jì)算法1.7952e+05表示,有效數(shù)位都是只有5位。

對(duì)比JavaScript與MATLAB在相同迭代次數(shù)100000000條件下的結(jié)果,明顯表明:JavaScript的數(shù)據(jù)結(jié)果1795216895.930967比MATLAB的1.7952e+09精確很多;運(yùn)行時(shí)間232ms比MATLAB的517.256ms小一倍多。總之,在相同計(jì)算機(jī)上進(jìn)行迭代計(jì)算,JavaScript在數(shù)據(jù)精度、處理時(shí)間都比MATLAB更加精確、短,這也證明了JavaScript在計(jì)算方面的優(yōu)越性,并且JavaScript的解釋執(zhí)行不依賴客戶端軟件,具有跨平臺(tái)特性。

3.2 不同計(jì)算機(jī)上相同迭代次數(shù)的計(jì)算性能對(duì)比

迭代次數(shù)設(shè)置為100000000次,迭代函數(shù)為y=y+x*x,初始條件不變,依然為x=4.237;y=0;i=0。具體的代碼執(zhí)行過程與3.1相同。

計(jì)算機(jī)主要配置如下:

⑴ Lenovo z460:Windows 7旗艦版32位、Intel Core i3-M350 @ 2.27GHz、2.00GB內(nèi)存;

⑵ 臺(tái)式機(jī):Windows 7旗艦版64位;Intel Core i3-3220 @ 3.30GHz;8.00GB內(nèi)存。

MATLAB和JavaScript在不同計(jì)算機(jī)上相同迭代次數(shù)的計(jì)算性能對(duì)比結(jié)果如表3所示。

上述結(jié)果是JavaScript、MATLAB分別在不同計(jì)算機(jī)上運(yùn)行得出的計(jì)算結(jié)果。

JavaScript在不同計(jì)算機(jī)條件下的計(jì)算結(jié)果得出結(jié)論:Lenovo z460筆記本與臺(tái)式機(jī)的計(jì)算結(jié)果保持一致,但在運(yùn)行時(shí)間上臺(tái)式機(jī)明顯更快,達(dá)到了106Ms。MATLAB在不同計(jì)算機(jī)條件下的計(jì)算結(jié)果得出結(jié)論:兩者的計(jì)算結(jié)果皆為1.7952e+09;處理時(shí)間兩者相差不大,皆為500ms以上。

對(duì)比兩種語言可以得出結(jié)論:JavaScript無論在哪種計(jì)算機(jī)環(huán)境下都比MATLAB的數(shù)據(jù)精度、運(yùn)行時(shí)間效果要好;MATLAB的運(yùn)行結(jié)果與計(jì)算機(jī)關(guān)系不大;JavaScript的運(yùn)行情況容易受支持瀏覽器運(yùn)行的計(jì)算機(jī)配置影響。

3.3 小結(jié)

上述兩次實(shí)驗(yàn),從不同迭代次數(shù)、不同運(yùn)行計(jì)算機(jī)的條件下進(jìn)行JavaScript與MATLAB的對(duì)比測(cè)試,得到以下幾個(gè)結(jié)論。

JavaScript比MATLAB的迭代計(jì)算結(jié)果更加精確、運(yùn)行速度也更快;

MATLAB的計(jì)算結(jié)果幾乎不受計(jì)算機(jī)配置影響;

JavaScript的運(yùn)行情況容易受計(jì)算機(jī)配置影響,這是因?yàn)闉g覽器的運(yùn)行受計(jì)算機(jī)內(nèi)存等影響。

4 結(jié)束語

JavaScript的計(jì)算特性不只是在迭代計(jì)算方面可以發(fā)揮作用,同樣在線性代數(shù)、無約束優(yōu)化等方面也有自己獨(dú)特的支持功能。MATLAB不僅支持矩陣運(yùn)算、二三維曲線繪圖,在工程優(yōu)化方面也有著JavaScript不可企及的優(yōu)勢(shì)。

本文研究的JavaScript雖然在迭代方面處在優(yōu)勢(shì),但相對(duì)于MATLAB強(qiáng)大的工程運(yùn)算功能也存在許多不足,在此指出:

數(shù)據(jù)類型單一。JavaScript的數(shù)據(jù)類型為松散型,并不能像一些高級(jí)程序設(shè)計(jì)語言一樣可以設(shè)置數(shù)據(jù)精度或者支持int、double、long等數(shù)據(jù)類型。實(shí)際計(jì)算中,JavaScript都會(huì)以最接近理想結(jié)果的形式把數(shù)據(jù)結(jié)果展現(xiàn)出來。

功能支持不夠。MATLAB在工程優(yōu)化方面有兩個(gè)重要作用,一是最小二乘法擬合、優(yōu)化,二是擬牛頓優(yōu)化。JavaScript并沒有MATLAB那樣功能完整的算法工具箱或插件等,只能通過編寫代碼實(shí)現(xiàn)簡(jiǎn)單曲線最小二乘法擬合。

參考文獻(xiàn)(References):

[1] Nicholas C.Zakas.JavaScript高級(jí)程序設(shè)計(jì)[M].人民郵電出

版社,2012.

[2] Loiane Groner.學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法[M].人民郵

電出版社,2015.

[3] Zakas N C.高性能JavaScript[M].電子工業(yè)出版社,2010.

[4] 司守奎,孫璽菁.數(shù)學(xué)建模算法與應(yīng)用[M].國(guó)防工業(yè)出版社,

2015.

[5] 張永恒.工程優(yōu)化設(shè)計(jì)與MATLAB實(shí)現(xiàn)[M].清華大學(xué)出版

社,2011.

猜你喜歡
計(jì)算機(jī)
計(jì)算機(jī)操作系統(tǒng)
穿裙子的“計(jì)算機(jī)”
基于LabVIEW的計(jì)算機(jī)聯(lián)鎖仿真系統(tǒng)
基于計(jì)算機(jī)自然語言處理的機(jī)器翻譯技術(shù)應(yīng)用與簡(jiǎn)介
科技傳播(2019年22期)2020-01-14 03:06:34
計(jì)算機(jī)多媒體技術(shù)應(yīng)用初探
科技傳播(2019年22期)2020-01-14 03:06:30
信息系統(tǒng)審計(jì)中計(jì)算機(jī)審計(jì)的應(yīng)用
計(jì)算機(jī)應(yīng)用軟件開發(fā)技術(shù)的幾點(diǎn)探討
電子制作(2017年14期)2017-12-18 07:08:10
計(jì)算機(jī)網(wǎng)絡(luò)安全
iLOCK型計(jì)算機(jī)聯(lián)鎖開發(fā)中的需求開發(fā)管理
計(jì)算機(jī)聯(lián)鎖系統(tǒng)配置軟件設(shè)計(jì)與實(shí)現(xiàn)
主站蜘蛛池模板: 久久精品国产免费观看频道| 一区二区三区四区精品视频 | 亚洲AV一二三区无码AV蜜桃| 日本免费精品| 久久青青草原亚洲av无码| 91精品专区| 日韩精品亚洲人旧成在线| 国产美女视频黄a视频全免费网站| 亚洲第一色视频| 99re热精品视频国产免费| 狠狠色狠狠色综合久久第一次| 亚洲美女高潮久久久久久久| 91po国产在线精品免费观看| 国产亚洲精品91| 欧美天堂在线| 国产精品9| AV片亚洲国产男人的天堂| 久久精品人人做人人综合试看| 国产在线91在线电影| 国产一区二区三区精品欧美日韩| 国产激爽大片在线播放| 国产午夜福利片在线观看| 伊人国产无码高清视频| 日韩无码黄色网站| 亚洲国产一区在线观看| julia中文字幕久久亚洲| 午夜在线不卡| a级毛片视频免费观看| 国产永久在线视频| 四虎国产在线观看| 国产日本视频91| 无码免费的亚洲视频| 国产黄色视频综合| 国产人人乐人人爱| 亚洲熟妇AV日韩熟妇在线| 中文字幕亚洲综久久2021| 亚洲AV一二三区无码AV蜜桃| 欧美精品成人一区二区视频一| 天天干天天色综合网| 91啪在线| 91视频区| 国产美女自慰在线观看| 999精品免费视频| 亚洲无码不卡网| 精品视频一区在线观看| 九色综合视频网| 亚洲一级毛片在线观播放| 久久久久亚洲Av片无码观看| 免费观看亚洲人成网站| 最新国产网站| 热这里只有精品国产热门精品| 亚洲最猛黑人xxxx黑人猛交| 91亚瑟视频| 国产精品私拍在线爆乳| 久久亚洲中文字幕精品一区| 国产人人射| 亚洲日韩精品欧美中文字幕| 四虎在线高清无码| 热久久综合这里只有精品电影| 免费 国产 无码久久久| 国产簧片免费在线播放| 在线观看视频99| 无码高潮喷水专区久久| 97精品国产高清久久久久蜜芽| 国产乱人伦AV在线A| 中文字幕人妻无码系列第三区| 2021国产精品自拍| 亚洲欧美精品在线| 亚洲人妖在线| 男女男免费视频网站国产| 久久综合丝袜长腿丝袜| 日韩不卡高清视频| 亚洲精品卡2卡3卡4卡5卡区| 久久精品免费国产大片| 久久精品aⅴ无码中文字幕| 99re热精品视频国产免费| 无码一区中文字幕| 色妺妺在线视频喷水| 日本欧美午夜| 国产男人天堂| 三上悠亚一区二区| 亚洲男人的天堂网|