小编Oli*_*ort的帖子

为什么 for 循环体中的一个基本算术运算执行得比两个算术运算慢?

当我尝试测量算术运算的执行时间时,我遇到了非常奇怪的行为。包含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)

c++ performance assembly cpu-architecture google-benchmark

15
推荐指数
3
解决办法
863
查看次数

如何正确地将所有权从原始指针移动到std :: unique_ptr?

我的方法是:

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)

我是在正确地做所有事情还是有更好的解决方案?

c++ smart-pointers

6
推荐指数
1
解决办法
4598
查看次数

如何在HLSL中复制数组?

HLSL 中,我有两个数组:

int arr1[2]; 
int arr2[2];
Run Code Online (Sandbox Code Playgroud)

我需要将内容复制arr1arr2.

我应该遍历每个元素吗?

arr2[0] = arr1[0]; 
arr2[1] = arr1[1];
Run Code Online (Sandbox Code Playgroud)

是否有任何特定的HLSL工具(例如memcpy()C / C++ 中)?

或者我可以只写arr2 = arr1;,这对我有用吗?

c++ directx hlsl direct3d11

5
推荐指数
1
解决办法
258
查看次数