小编Eth*_*one的帖子

MinGW 4.7.2与Visual C++ 11.0(2012)基准测试

我一直在做一个实验,在MinGW和MSVC之间做出选择.我决定使用Adobe C++ Performance Benchmark来完成它.虽然MSVC的输出在某些操作上异常快,但在其他一些操作上却很慢.我有时间做的时候会添加基准测试套件的其他部分.

我已经删除了一些由于字符限制而具有相同结果的基准测试,您可以通过我假设的模式来解释它们.

系统信息

  • AMD Athlon(tm)64 X2双核处理器5200+ 2.70GHz
  • 6GB DDR2 800MHz RAM
  • Windows 8

知道为什么结果很慢吗?此外,这个测试的结果可以解释计算机游戏性能(可能是CPU物理引擎),因为特别是浮点基准测试速度较慢?

-

MinGW的

g++ -march=native -O3 -ffast-math -fomit-frame-pointer -momit-leaf-frame-pointer -flto -fwhole-program -ftree-loop-distribution

simple_types_loop_invariant.exe 

test                           description   absolute   operations   ratio with
number                                       time       per second   test0

 0                  "uint8_t variable add"   1.91 sec   836.38 M     1.00
 1          "uint8_t variable add hoisted"   0.08 sec   19277.11 M     0.04
 2        "uint8_t multiple variable adds"   1.93 sec   829.45 M     1.01
 3             "uint8_t variable subtract"   1.92 sec   832.47 M     1.00 …
Run Code Online (Sandbox Code Playgroud)

c++ mingw visual-c++

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

什么是"从这里需要"的错误

它位于我的Eclipse Problems视图中.代码编译正常,但有一个错误说" required from here",指向一些提升头文件和行state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);

我不喜欢有错误或警告.有人知道那是什么吗?

c++ eclipse mingw

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

如果我在互斥锁之间声明一个变量并返回它,我是否需要使用volatile关键字?

假设我有以下功能.

std::mutex mutex;

int getNumber()
{
    mutex.lock();
    int size = someVector.size();
    mutex.unlock();
    return size;
}
Run Code Online (Sandbox Code Playgroud)

这是一个volatile在声明大小时使用关键字的地方吗?如果我不使用volatile,会返回值优化还是别的东西会破坏这段代码?someVector可以从程序具有的众多线程中的任何一个更改大小,并且假设只有一个线程(修饰符除外)调用getNumber().

c++

6
推荐指数
2
解决办法
820
查看次数

Linux Kernel Generic Netlink - 它是并发的吗?

假设我已经使用genl_register_family_with_ops多个回调注册了一个通用的netlink接口.

我没有看到任何关于它的警告,我认为回调是连续调用的,但没有关于如何调用回调的信息.

是否有可能在我注册的同一个通用netlink接口上同时调用多个回调?我是否需要回调之间的任何同步?

为了使问题更简单:

可以在两个内核中抢占或同时运行单个netlink回调吗?

c linux netlink

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

错误:'='标记之前的预期标识符

我正在尝试编译库.

class ROCKETCORE_API Property
{
public:
enum Unit
{
    UNKNOWN = 1 << 0,

    KEYWORD = 1 << 1,           // generic keyword; fetch as < int >

    STRING = 1 << 2,            // generic string; fetch as < String >

    // Absolute values.
    NUMBER = 1 << 3,            // number unsuffixed; fetch as < float >
    PX = 1 << 4,                // number suffixed by 'px'; fetch as < float >
    COLOUR = 1 << 5,            // colour; fetch as …
Run Code Online (Sandbox Code Playgroud)

c++ mingw librocket

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

引用数组

这对你来说可能很容易,但我还没有参考.我不明白为什么这不起作用.请告诉我正确的风格.

template <typename T>
void shuffle(T (&array)[], size_t len){};
Run Code Online (Sandbox Code Playgroud)

我试着这样称呼它:

uint_fast8_t dirBag[4]
Random::shuffle(dirBag, sizeof(dirBag)/sizeof(decltype(dirBag[0])));
Run Code Online (Sandbox Code Playgroud)

错误是:

Error   1   error C2784: 'void Random::shuffle(T (&)[],size_t)' : could not deduce template argument for 'T (&)[]' from 'uint_fast8_t [4]'
Run Code Online (Sandbox Code Playgroud)

c++ arrays reference

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

圆形三角形条

我一直试图在OpenGL中创建一个圆圈,但我不能使用三角形粉丝,因为我已经读过它们在directx中不再可用,我也将进行直接调用.

我真的不明白三角条是如何工作的.我的所有实现都有漏洞或奇怪的怪癖,任何人都可以帮助我,我怎样才能以最好的方式实现它?

三角形条和单独的三角形之间确实存在任何性能差异,因为我们可以说10个圆圈,每个圆形有1000个三角形.它会有很大的不同吗?

c++ opengl 3d

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

std :: map with std :: pair keys其中pair元素没有顺序重要性

正如问题所说,我需要以这样的方式使用std :: map.

std::map<std::pair<int, int>, int*> m;

int* a_ptr = new int;
*a_ptr = 15;
m[std::make_pair(1, 2)] = a_ptr;
std::cout << *m[std::make_pair(2, 1)] << std::endl; //should output 15
Run Code Online (Sandbox Code Playgroud)

现在,在我的实际实现中,所有键和值实际上都是指针.我该如何处理这个问题?

我想到了两个想法.

  1. 一个是我应该写一个函数,每当我m[]用来访问或写入地图时,我也应该m.find()检查另一对组合并根据它行事.

  2. 其他的是使用带有自定义哈希的std :: unordered_map,切换元素位置,它会 以某种方式没有区别pair.(我不知道如何做到这一点,如果我乘以或添加两个指针,结果将不相等.如果这是方法,需要一些帮助.)

如果你能想出一个更好的方法,我会很高兴听到它,否则我在第二个条款中说明了我需要帮助的内容.(我觉得效率更高,第一个看起来不太好)

谢谢.

c++ stl

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

迭代boost :: hana :: tuple

我无法通过hana::for_each迭代元组来找到访问真实对象的方法.

struct A {
  std::string name;
}

struct B {
  std::string name;
}

using type_t = decltype(boost::hana::tuple_t<A, B>);
type_t names;

boost::hana::for_each(names, [&](const auto& a) {
      std::cout << a.name << std::endl;
    });
Run Code Online (Sandbox Code Playgroud)

类型a似乎是hana::tuple_impl<...>并且似乎不可转换为其基础类型decltype(std::decay_t<a>)::type.

我基本上想要迭代一个具有相同接口但包含不同值的模板化对象(容器)列表.实现这一目标的更好方法是受欢迎的

c++ boost boost-hana

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

C++ std :: enable_if在类模板中,用于成员函数

问题很简单.我有一个带有包含警卫的头文件和一个实现文件.impl.头文件包括实现文件.我想做以下事情:

头文件:

template<size_t N>
class A
{
  void func();
};
Run Code Online (Sandbox Code Playgroud)

.impl文件:

template<size_t N>
typename std::enable_if<(N <= 5), void>::type A<N>::func() { ... }

template<size_t N>
typename std::enable_if<(N > 5), void>::type A<N>::func() { ... }
Run Code Online (Sandbox Code Playgroud)

然而,我还没有好,std::enable_if并且似乎找不到原型,func因为我通过更改返回类型来更改函数签名.如何为用户提供一个界面功能,我可以有不同的实现.

这本质上是MCU寄存器修改器,它在两个寄存器上运行,因为一个寄存器没有容量.我宁愿不在函数内使用基于N的任何脏偏移,而是依赖于普通结构.另外,我宁愿不使用辅助函数,如果没有它们,可能会使事情复杂化.

c++ templates c++11

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

Chrome应用中的扩展程序上下文菜单(浏览器范围内)

我一直在使用Chrome扩展程序和应用程序,并注意到Chrome应用程序chrome.contextMenu不适用于浏览器范围.它只管理App后台窗口的上下文菜单.

有没有办法像扩展一样创建浏览器范围的上下文菜单?如果应用中没有任何API,我如何在我的应用中添加扩展程序,以便用户不需要安装两个不同的东西?

这是项目:https://github.com/metherealone/chorrent

显然,我只需要使用扩展名捕获磁链接和torrent文件.

google-chrome google-chrome-extension google-chrome-app

0
推荐指数
1
解决办法
113
查看次数