V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wisefree  ›  全部回复第 1 页 / 共 16 页
回复总数  315
1  2  3  4  5  6  7  8  9  10 ... 16  
33 天前
回复了 wisefree 创建的主题 C++ 请教一个 C++性能问题
@mightybruce 多谢啦,我调整了一下,发现自己对高性能运算,确实没有了解太多
33 天前
回复了 wisefree 创建的主题 C++ 请教一个 C++性能问题
@CedarChen 好的,多谢
33 天前
回复了 wisefree 创建的主题 C++ 请教一个 C++性能问题
@lzoje 多谢,是这样的,我调整了用例,new 之后全部赋值
33 天前
回复了 wisefree 创建的主题 C++ 请教一个 C++性能问题
@neocanable 同意,我重新写了一个例子,也应该是缓存导致速度差异
33 天前
回复了 wisefree 创建的主题 C++ 请教一个 C++性能问题
@jark006 是的,重新写了一个例子,发现应该是缓存起作用
33 天前
回复了 wisefree 创建的主题 C++ 请教一个 C++性能问题
@awenxjtu 重新写了一个例子,应该就可以用你的说法解释了,附言没有发送没有用 markdown 语法,格式有点混乱
33 天前
回复了 wisefree 创建的主题 C++ 请教一个 C++性能问题
``` c++

#include <iostream>
#include <chrono>


int I = 360;
int J = 280;
int K = 3;

int idealI = 512;

void func1(int* arr, float* transArr)
{
auto startTime = std::chrono::steady_clock::now();

for (int i = 0; i < I; i++) {
for (int j = 0; j < J; j++) {
for (int k = 0; k < K; k++) {

int realIdx = (i * (K * J) + j * K + k) * 2;
int imagIdx = realIdx + 1;

int transRealIdx = (k * (J * I) + j * I + i) * 2;
int transImagIdx = transRealIdx + 1;

transArr[transRealIdx] = arr[realIdx] * 0.1f;
transArr[transImagIdx] = arr[imagIdx] * 0.1f;
}
}
}

auto endTime = std::chrono::steady_clock::now();

std::chrono::duration<double> diffTime = endTime - startTime;

std::cout << diffTime.count() << std::endl;
}


void func2(int* arr, float* transArr)
{
auto startTime = std::chrono::steady_clock::now();

for (int i = 0; i < I; i++) {
for (int j = 0; j < J; j++) {
for (int k = 0; k < K; k++) {
int realIdx = (i * (K * J) + j * K + k) * 2;
int imagIdx = realIdx + 1;

int transRealIdx = (k * (J * idealI) + j * idealI + i) * 2;
int transImagIdx = transRealIdx + 1;

transArr[transRealIdx] = arr[realIdx] * 0.1f;
transArr[transImagIdx] = arr[imagIdx] * 0.1f;
}
}
}

auto endTime = std::chrono::steady_clock::now();

std::chrono::duration<double> diffTime = endTime - startTime;

std::cout << diffTime.count() << std::endl;
}

int main(void)
{

// i j k
int* arr = new int[I * J * K * 2];
for (int i = 0; i < I; i++) {
for (int j = 0; j < J; j++) {
for (int k = 0; k < K; k++) {
int realIdx = (i * (K * J) + j * K + k) * 2;
int imagIdx = realIdx + 1;

arr[realIdx] = k;
arr[imagIdx] = k;
}
}
}

// k j i
float* transArr = new float[idealI * J * K * 2];

for (int i = 0; i < idealI; i++) {
for (int j = 0; j < J; j++) {
for (int k = 0; k < K; k++) {
int realIdx = (i * (K * J) + j * K + k) * 2;
int imagIdx = realIdx + 1;

transArr[realIdx] = 0;
transArr[imagIdx] = 0;
}
}
}

func1(arr, transArr);
func2(arr, transArr);


delete[] arr;
delete[] transArr;

return 0;
}
```
177 天前
回复了 wisefree 创建的主题 C++ 请教大家一个 C++线程池的问题
@ysc3839 是的,我也想过 RVO 最有可能
177 天前
回复了 wisefree 创建的主题 C++ 请教大家一个 C++线程池的问题
@zhaoloving 嗯嗯,我也想这么干,只是这个例子能编译通过,我没想明白
177 天前
回复了 wisefree 创建的主题 C++ 请教大家一个 C++线程池的问题
@ysc3839 SubmitTask 函数返回了 Result 这个动作,是有 copyable 语义的,我也不太懂这个例子
177 天前
回复了 wisefree 创建的主题 C++ 请教大家一个 C++线程池的问题
@donaldturinglee 好的,随手搜了一个,看到挺清晰的,就看了一下。。。
227 天前
回复了 wisefree 创建的主题 Bash Linux bash 脚本监控和重启一个守护进程
@Remember 嗯嗯,刚刚大致搜索了 systemd ,原来它这么强大
227 天前
回复了 wisefree 创建的主题 Bash Linux bash 脚本监控和重启一个守护进程
@Remember 确实有误解,之前没有了解 systemd 的用法,就用了 chatgpt 写的 service
227 天前
回复了 wisefree 创建的主题 Bash Linux bash 脚本监控和重启一个守护进程
@37Y37 好的,我再去搜下相关知识,多谢
227 天前
回复了 wisefree 创建的主题 Bash Linux bash 脚本监控和重启一个守护进程
@ysc3839 我再搜下 systemd ,确实不太懂这个,临时想出的 bash 脚本,然后用 chatgpt 写了一个服务
227 天前
回复了 wisefree 创建的主题 Bash Linux bash 脚本监控和重启一个守护进程
@ysc3839 要监视进程是否运行,systemd 直接启动进程,进程 die 后,无法自动重启
253 天前
回复了 wisefree 创建的主题 C++ 请教大家一个架构的问题
@cnbatch 多谢,我去学习这个功能
253 天前
回复了 wisefree 创建的主题 C++ 请教大家一个架构的问题
@exch4nge 好的,多谢建议哈
253 天前
回复了 wisefree 创建的主题 C++ 请教大家一个架构的问题
@liberize 是的,多谢啦,留空这个建议很有用
253 天前
回复了 wisefree 创建的主题 C++ 请教大家一个架构的问题
@youngxhui838 好的,我去看看
1  2  3  4  5  6  7  8  9  10 ... 16  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2776 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 14ms · UTC 13:18 · PVG 21:18 · LAX 05:18 · JFK 08:18
Developed with CodeLauncher
♥ Do have faith in what you're doing.