小编hl3*_*kel的帖子

Kotlin中的reified关键字如何工作?

我试图了解reified关键字的目的,显然它允许我们对泛型进行反思.

但是,当我把它放在外面时它的效果一样好.任何人都在关心何时产生实际差异

generics kotlin kotlin-reified-type-parameters

98
推荐指数
3
解决办法
2万
查看次数

GNU和MSVC Rust工具链有什么区别?

文件说明:

您需要哪个版本的Rust在很大程度上取决于您希望与之互操作的C/C++库:与Visual Studio生成的软件互操作使用Rust的MSVC版本; 与使用MinGW/MSYS2工具链构建的GNU软件互操作使用GNU构建.

究竟是什么差异?

  1. 它只是与MSVC编译的二进制文件的互操作性?

  2. 它是否会影响链接或Rust或LLVM是否提供自己的链接?

  3. 我知道Rust使用LLVM作为他们的后端,会在两个影响代码生成之间做出选择吗?

rust

12
推荐指数
1
解决办法
1765
查看次数

为什么这段代码片段在C和C++中产生完全不同的汇编代码?

struct v {
    int val[16];
};

struct v test(struct v a, struct v b) {
    struct v res;

    for (int i = 0; i < 16; i++)
        res.val[i] = a.val[i] + b.val[i];

    return res;
}
Run Code Online (Sandbox Code Playgroud)

编译为C++,GCC 7.2发出:

  push r10
  vmovdqu32 zmm0, ZMMWORD PTR [rsp+16]
  mov rax, rdi
  vpaddd zmm0, zmm0, ZMMWORD PTR [rsp+80]
  lea r10, [rsp+16]
  vmovdqu32 ZMMWORD PTR [rdi], zmm0
  pop r10
Run Code Online (Sandbox Code Playgroud)

编译为C:

  lea r10, [rsp+8]
  and rsp, -64
  mov rax, rdi
  push QWORD PTR [r10-8]
  push rbp
  mov …
Run Code Online (Sandbox Code Playgroud)

c c++ assembly gcc simd

8
推荐指数
1
解决办法
355
查看次数

C# 中的 RSASSA-PSS

有谁知道RSACryptoServiceProvider.SignHash使用哪种签名算法?我相信它是 RSAPKCS1,它仍然安全吗?

有没有人有将 RSASSA-PSS 配置为 RSACryptoServiceProvider 的签名算法而不使用像 BouncyCastle 这样的第三方库的想法?

提前致谢。

c# rsa digital-signature

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

为什么多线程会在这里表现更差?

我通过bitarray设置枚举每秒都为false.

现在我想通过分割它分成两个线程.对于一些奇怪的原因,不过,每个线程做的时候加快这的工作量需要64%更多的时间,我不知道为什么?

这可能是由于某种CPU缓存效应?我该怎么做呢?

我以前用lambda表达式尝试了8个线程,但它总是大约1400毫秒,但是在单线程中我常常得到850毫秒.此外,当我让一个线程完成所有工作时,我花了830毫秒.我只是不明白,有人知道这里的原因吗?

码:

    class Program
    {
        static int count = 0x10000000;
        static int half = count / 2;
        static BitArray bitArray = new BitArray(count);

        static unsafe void Main(string[] args)
        {
            Stopwatch sw = Stopwatch.StartNew();

#if SINGLE
            for (int i = 0; i < bitArray.Count; i += 2)
                bitArray.Set(i, true);
#else
            Thread thread1 = new Thread(Thread1);
            Thread thread2 = new Thread(Thread2);
            thread1.Start();
            thread2.Start();
            thread1.Join();
            thread2.Join();
#endif
            sw.Stop();

            Console.WriteLine(sw.ElapsedMilliseconds);
            Console.ReadLine();
        }

        static void Thread1()
        {
            Stopwatch …
Run Code Online (Sandbox Code Playgroud)

c# multithreading

3
推荐指数
1
解决办法
506
查看次数

数组指针线程安全

让我们假设我们在C#中有一个从mutliple线程访问的数组,在运行时更改这个数组是否可以安全?(不是改变其数据,而是改变指针).换句话说,正在编写一个数组指针进行原子操作吗?

c# arrays thread-safety

2
推荐指数
1
解决办法
180
查看次数