小编use*_*112的帖子

解释字节码与编译字节码?

我遇到了一些关于JVM/JIT活动的参考文献,其中在编译字节码和解释字节码之间似乎有所区别.特定注释声明字节码被解释为前10000次运行并在此后编译.

"编译"和"解释"字节码有什么区别?

java jit jvm jvm-hotspot

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

C++"记忆障碍"的例子

我正在阅读关于volatile关键字的这个问题的答案:

/sf/answers/173962421/

这个人说:

防止重新排序的解决方案是使用内存屏障,该内存屏障向编译器和CPU指示在该点上不能重新排序内存访问.在易失性变量访问周围放置这些障碍可确保即使非易失性访问也不会在易失性访问中重新排序,从而允许我们编写线程安全的代码.

但是,内存障碍还可以确保在达到屏障时执行所有挂起的读/写操作,因此它有效地为我们提供了我们自己需要的所有内容,从而使得volatile不必要.我们可以完全删除volatile限定符.

这个"内存障碍"在C++中是如何实现的?

编辑:

有人可以给出一个简单的代码示例吗?

c++ multithreading volatile

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

std :: thread :: id是否有"null"值?

我想要一个类型的类成员std::thread::id,我也可以使它无效,然后检查它是否已设置.

"取消"此类型然后检查是否已设置的最佳方法是什么?

c++ multithreading c++11

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

使用虚函数而不是IF语句更快?

我记得在某处在线阅读,在极端低延迟的情况下,最好使用虚函数代替IF语句.

这是真的?他们基本上说动态多态性对于速度情况更好吗?

是否有任何用户可以分享任何其他C++低延迟"怪癖"?

c++ visual-c++

7
推荐指数
1
解决办法
1572
查看次数

在UNIX上学习C++编程的好书(pref Linux)?

用户可以帮我找一些适合在Unix平台上编写C/C++代码的书吗?

我的重点是编写低延迟代码,用于电子交易平台.

(我意识到StackOverflow上有一些线程一般会询问有关语言的书籍,但我的Q专门针对Unix OS上的编码)

c c++ unix linux

7
推荐指数
1
解决办法
6641
查看次数

C++派生类是否必须在头文件中包含继承函数/成员的定义?

标题几乎说明了所有派生类必须重新包含从头文件中的父类继承的函数/数据成员的定义?

可以从继承语句隐含继承的函数/成员吗?它们是否应该为了可读性而明确重新声明,否则这可能会隐藏?

我不确定我应该在派生类的头文件中做什么.

c++ polymorphism inheritance header

7
推荐指数
2
解决办法
4954
查看次数

Unix vs BSD vs TCP vs Internet套接字?

我正在阅读Linux编程接口,它描述了Linux上使用的几种不同类型的套接字:

  • Unix域名
  • 伯克利
  • TCP
  • 互联网

本书所说的一件事是,如果你想在远程主机之间进行通信,你就不能使用Unix域套接字,因为它们用于同一主机上的IPC.你必须使用"互联网"套接字.

但是,我仍然有点困惑这与"TCP"套接字,Berkeley套接字和其他2有什么关系?他们的关系是什么?为什么你会有一个Internet套接字和一个TCP套接字?

总之,我试图理解所有(我错过了什么?)各种不同类型的Unix套接字以及在什么情况下我会使用它们?

unix sockets linux posix tcp

7
推荐指数
1
解决办法
2874
查看次数

通过shared_ptr访问是否比原始指针更多地污染缓存行?

我理解一个好的编译器可以执行优化,以便访问,例如,int*通过std::shared_ptr使用相同的程序集完成,就像使用原始int*指针一样.

我的问题是:包含优化的智能指针的缓存行是否会被智能指针中的其他数据成员污染,如引用计数器?因此,虽然生成的程序集与实际指针相同,但缓存性能可能更差,因为没有那么多的缓存行被有效使用?

编辑:如果我们迭代像这样的结构std::vector<std::shared_ptr<int>>并使用整数,这种性能影响会更加明显.

c++ optimization performance shared-ptr

7
推荐指数
1
解决办法
664
查看次数

英特尔编译器生成的代码比MSVC慢68%(提供完整示例)

我有C++代码处理来自一个1800元素阵列的三个连续值.由ICC 14.0编译的代码比MSVC生成的代码慢约68%(1600对2700 CPU周期).我不明白为什么.有人可以帮忙吗?即使我设置英特尔编译器-O3开关,它也不会改变时序.CPU是Ivy Bridge.

#include <iostream>

int main(){
        int data[1200];

        //Dummy-populate data
        for(int y=0; y<1200; y++){
            data[y] = y/2 + 7;
        }

        int counter = 0;

        //Just to repeat the test
        while(counter < 10000){

            int Accum = 0;
            long long start = 0;
            long long end = 0;
            int p = 0;

            start = __rdtsc();

            while(p < 1200){
                unsigned int level1 = data[p];  
                unsigned int factor = data[p + 1];
                Accum += (level1 * factor);
                p = p + 2; …
Run Code Online (Sandbox Code Playgroud)

c++ cpu optimization performance icc

7
推荐指数
1
解决办法
411
查看次数

GDB 在查看地址时打印回溯而不是中断

在GDB我想watch写入一个内存地址。watch但是,是否可以在写入地址时设置so,而不是中断到命令行,而是打印回溯并继续执行?

c++ debugging gdb

7
推荐指数
1
解决办法
310
查看次数