日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab 空矩阵耗时,性能 – 更快的方式通过空矩阵乘法初始化数组? (Matlab)

發(fā)布時間:2025/3/15 循环神经网络 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab 空矩阵耗时,性能 – 更快的方式通过空矩阵乘法初始化数组? (Matlab) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這很奇怪,我看到f更快,而g比你看到的慢。但是他們對我來說都是一樣的。也許不同版本的MATLAB?

>> g = @() zeros(1000, 0) * zeros(0, 1000);

>> f = @() zeros(1000)

f =

@()zeros(1000)

>> timeit(f)

ans =

8.5019e-04

>> timeit(f)

ans =

8.4627e-04

>> timeit(g)

ans =

8.4627e-04

編輯可以添加1的f和g的結尾,并看看你得到什么時間。

編輯2013年1月6日7:42 EST

我正在使用一臺機器遠程,所以抱歉低質(zhì)量的圖形(不得不生成他們盲目的)。

機器配置:

i7 920. 2.653 GHz。 Linux。 12 GB RAM。 8MB緩存。

它看起來甚至我可以訪問的機器顯示這種行為,除了在更大的尺寸(1979年和2073之間的某個地方)。沒有理由我現(xiàn)在可以想到的空矩陣乘法在更大的尺寸更快。

我會在回來之前多調(diào)查一下。

EDIT 2013年1月11日

在@ EitanT的帖子后,我想做一點點挖。我寫了一些C代碼,看看matlab可能如何創(chuàng)建一個零的矩陣。這里是我使用的c代碼。

int main(int argc, char **argv)

{

for (int i = 1975; i <= 2100; i+=25) {

timer::start();

double *foo = (double *)malloc(i * i * sizeof(double));

for (int k = 0; k < i * i; k++) foo[k] = 0;

double mftime = timer::stop();

free(foo);

timer::start();

double *bar = (double *)malloc(i * i * sizeof(double));

memset(bar, 0, i * i * sizeof(double));

double mmtime = timer::stop();

free(bar);

timer::start();

double *baz = (double *)calloc(i * i, sizeof(double));

double catime = timer::stop();

free(baz);

printf("%d, %lf, %lf, %lf\n", i, mftime, mmtime, catime);

}

}

這里是結果。

$ ./test

1975, 0.013812, 0.013578, 0.003321

2000, 0.014144, 0.013879, 0.003408

2025, 0.014396, 0.014219, 0.003490

2050, 0.014732, 0.013784, 0.000043

2075, 0.015022, 0.014122, 0.000045

2100, 0.014606, 0.014480, 0.000045

正如你可以看到calloc(第4列)似乎是最快的方法。它也在2025年和2050年之間顯著更快(我認為它將在2048左右?)。

現(xiàn)在我回到matlab檢查相同。這里是結果。

>> test

1975, 0.003296, 0.003297

2000, 0.003377, 0.003385

2025, 0.003465, 0.003464

2050, 0.015987, 0.000019

2075, 0.016373, 0.000019

2100, 0.016762, 0.000020

看起來f()和g()都使用較小大小的calloc(<2048?)。但是在更大的大小f()(zeros(m,n))開始使用malloc memset,而g()(zeros(m,0)* zeros(0,n) 因此,通過以下解釋分歧

> zeros(..)開始在較大的大小使用不同的(較慢?)方案。

> calloc也有些出乎意料地表現(xiàn),導致性能的提高。

這是Linux上的行為。有人可以在不同的機器(也許不同的操作系統(tǒng))上做同樣的實驗,看看實驗是否成立?

總結

以上是生活随笔為你收集整理的matlab 空矩阵耗时,性能 – 更快的方式通过空矩阵乘法初始化数组? (Matlab)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。