MatrixXi arr = MatrixXi::Random(450, 800);
int h = arr.rows(); int w = arr.cols();
time_t t0 = clock();
for (int y=0; y<h; y++) {
for (int x=0; x<w; x++) {
if (arr(y,x) > 10) arr(y,x)=1;
}
}
printf("time: %.2f ms\n", (float)(clock() - t0)/1000); // 37.8ms
int* ptr = arr.data();
t0 = clock();
for (int x=0; x<w; x++) {
for (int y=0; y<h; y++) {
if (*ptr > 10) *ptr = 1;
ptr++;
}
}
printf("time: %.2f ms\n", (float)(clock() - t0)/1000); // 0.9ms
t0 = clock();
ptr = arr.data();
int* ptr_t;
for (int x=0; x<w; x++) {
for (int y=0; y<h; y++) {
ptr_t = ptr + x*h + y;
// cout << *ptr_t;
}
}
printf("time: %.2f ms\n", (float)(clock() - t0)/1000); // 0.9ms
t0 = clock();
Map<Matrix<int, Dynamic, Dynamic, RowMajor>> arrRow(arr.data(), arr.rows(), arr.cols());
ptr = arrRow.data();
int s = arr.size();
for (int y=0; y<s; y++) {
if (*ptr > 10) *ptr = 1;
ptr++;
}
printf("time: %.2f ms\n", (float)(clock() - t0)/1000); // 0.9ms
Eigen中数据内存访问耗时记录
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 操作基本数据类型的流 操作基本数据类型DataInputStreamDataOutputStream 操作基本数据...
- 今日要点: DMA和DataBus定义 which做关系副词时介词前置 DMA(直接内存访问) Direct Me...
- 十点课堂课程品类分析 周末分析了十点课堂的课程类产品,并制作了相应的表格。下面从课程总数、课程类别、课程收入、课程...