performance - 我如何在 D 中执行类似 memcpy 的操作

标签 performance memory d

我有一个内存位置 a 并且我想快速将一定数量的字节复制到另一个位置,我将如何在 D 中执行此操作?

例如我该怎么做:

int main()
{
    void* src_data = 0x40001255;
    void* dst_data = 0x47F22000;
    u32 size = 0x200;
    memcpy(dst_data, src_data, size);
}

还有如何快速填充结构:

struct data_struct
{
    u32 block1;
    u32 block2;
    u32 block3;
    u32 block4;
    u32 block5;
    u62 block6;
    u128 bigblock;
} data_struct_t;

int main()
{
    void* src_data = 0x40001255;
    struct data_struct_t dst_data; 
    u32 size = sizeof(data_struct);
    memcpy(dst_data, src_data, size);
}

谢谢! 罗尔

最佳答案

分配给切片会执行数组复制,内部调用memcpy。


void main()
{
    void* src_data = 0x40001255;
    void* dst_data = 0x47F22000;
    uint size = 0x200;
    dst_data[0..size] = src_data[0..size];
}

第二个:


struct data_struct
{
    uint block1, block2, block3, block4, block5;
    ulong block6;
    uint[4] bigblock;
}

void main()
{
    auto src_data = cast(data_struct*) 0x40001255; // unaligned, WTF?!
    auto dst_data = *src_data;
}

关于performance - 我如何在 D 中执行类似 memcpy 的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7281433/

相关文章:

android - 如何使用动态数据实时更新Android ListView?

python - 重复计数循环(n*n码性能)

c++11 - C++ std::atomic 和共享内存?

c# - 从 C# 代码测量 native DLL 内存使用情况

constructor - D 构造函数中的不变性

c# - 根据特定条件在列表末尾移动列表项的有效方法

c++ - 无符号类型按位移位的 RHS 操作数类型

将多个 OpenCL 缓冲区组合成一个大缓冲区

d - 错误 : null dereference

templates - 如何在 D 中重新创建类似 std.conv.to 的东西?