当我尝试测量算术运算的执行时间时,我遇到了非常奇怪的行为。包含for循环体中具有一个算术运算的循环的代码块总是比相同的代码块执行得慢,但在for循环体中具有两个算术运算。这是我最终测试的代码:
#include <iostream>
#include <chrono>
#define NUM_ITERATIONS 100000000
int main()
{
// Block 1: one operation in loop body
{
int64_t x = 0, y = 0;
auto start = std::chrono::high_resolution_clock::now();
for (long i = 0; i < NUM_ITERATIONS; i++) {x+=31;}
auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> diff = end-start;
std::cout << diff.count() << " seconds. x,y = " << x << "," << y << std::endl;
}
// Block 2: two operations in loop …Run Code Online (Sandbox Code Playgroud) 我的方法是:
class SomeClass
{
std::vector<std::unique_ptr<MyObject>> myObjects;
public:
void takeOwnership(MyObject *nowItsReallyMyObject)
{
myObjects.emplace_back(std::move(nowItsReallyMyObject));
}
};
Run Code Online (Sandbox Code Playgroud)
我是在正确地做所有事情还是有更好的解决方案?
在HLSL 中,我有两个数组:
int arr1[2];
int arr2[2];
Run Code Online (Sandbox Code Playgroud)
我需要将内容复制arr1到arr2.
我应该遍历每个元素吗?
arr2[0] = arr1[0];
arr2[1] = arr1[1];
Run Code Online (Sandbox Code Playgroud)
是否有任何特定的HLSL工具(例如memcpy()在C / C++ 中)?
或者我可以只写arr2 = arr1;,这对我有用吗?