小编use*_*748的帖子

如何获得指向虚拟成员函数的“直接”函数指针?

我正在一个嵌入式平台上工作,它不能很好地处理动态代码(根本没有推测/OOO 执行)。在这个平台上,我经常在同一个对象上调用虚拟成员函数,但是编译器无法优化 vtable-lookup,因为它似乎没有识别出仅在第一次调用时才需要查找。

因此我想知道:是否有一种手动方法可以对 C++ 类的虚拟成员函数进行去虚拟化,以获得直接指向解析地址的函数指针?我查看了 C++ 函数指针,但由于它们似乎需要指定类型,我想这行不通。

先感谢您

c++ pointers

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

如何为linux进程分配"内存优先级"?

我在一台小型OpenWRT路由器上运行,由于可用的RAM数量有限(32mb),无法避免交换.

大多数情况下,路由器不会执行任何其他操作,但有时会访问路由器上运行的postgresql数据库.由于tor不断运行,postgresql被完全换掉,前几次访问具有非常高的延迟,这很糟糕,因为它是一个交互使用的系统.

我已经为postgres分配了一个很好的-15值,而对于tor已经分配了+15,但它似乎并没有对内存管理造成太大影响.全局设置swappiness = 1也不会改变事情,因为无法避免交换,并且由于postgresql大部分时间都没有运行,所以无论如何都会将其换出.

有没有办法像Linux进程的内存优先级?我看了一下cgroup特定的swappiness,但是我发现的唯一描述是它影响了决策页面缓存与交换.

我正在寻找的是一个参数,告诉linux内核不要像其他进程一样将postgresql交换出来(但是我不想把整个过程搞得一团糟).或者指定swappiness = 80系统范围和swapiness = 1 for postgresql将postgresql保留在内存中,同时在需要时交换其他所有内容?

linux swap memory-management cgroups

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

Cortex-A57可以双发出128位neon指令吗?

Cortex-A57 优化指南指出,大多数对 128 位向量数据进行操作的整数指令都可以双发出(第 24 页,整数基本 F0/F1,逻辑 F0/F1,执行吞吐量 2)。

然而,根据我们的内部(综合)基准测试,即使有大量可用的指令并行性,吞吐量似乎也仅限于 1 128 位 neon 整数指令(编写基准测试的目的是测试 128 位 neon 指令是否可以是双重发行的,所以这是我们关心的事情)。当将 50% 128 位指令与 50% 64 位指令混合时,我们能够实现每个时钟 1.25 条指令(仅霓虹灯整数算术,无加载/存储)。

使用 128 位 ASIMD/Neon 指令时是否需要采取特殊措施才能获得双发出吞吐量?

谢谢,克莱门斯

assembly arm pipeline

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

有没有办法在继承类中指定基类中的数组大小?

我有一个抽象基类,其中包含一个数组以及两个或多个继承类,这些继承类希望在基类中具有稍大的数组。

我尝试使用模板来解决这个问题:

template <int arraySize>
class Baseclass {
public:
    uint16_t arr[arraySize];
};

class InheritedClass :
    public Baseclass <5> {};
Run Code Online (Sandbox Code Playgroud)

我现在面临的问题是:每当我使用指向某个基类对象的指针时,编译器都会抱怨:

类模板“Baseclass”的参数列表丢失

我想我明白这里发生了什么:没有模板参数的基类现在不是一个完整的类型 - 但编译器需要一个。

因此我想知道 - 是否有一种(更好的)方法来实现我想要做的事情,而不需要在 InheritedClass 中分配数组并将指针传递给 Baseclass?

先感谢您!

c++ inheritance templates

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