c++ - 这种优化有名称吗?

标签 c++ multithreading optimization data-structures

我在大型代码库上工作,在分析时,大部分时间都花在了锁争用和映射查找上。该系统是一个实时系统,由传入数据流的回调驱动。许多线程得到回调。 (许多消费者)。

通常使用字符串(键)调用回调函数,然后从回调中调用许多函数。这些函数本身会调用许多函数。

许多这些函数或这些函数的子函数都进行查找,通常每次都查找相同的字符串。 (最初传递给回调的字符串)。

明显的优化是进行一次查找,然后将找到的内容作为参数传递到调用链中。但问题是这将涉及更改大量代码和函数签名。

因此,一种解决方案是在回调函数中将查找值保存在全局结构中,将 threadid 映射到查找值。 Threadid 是一个整数,线程数小于 100,因此查找线程 ID 比查找字符串更快。

这项技术有名称吗?它就像一个在调用链顶部被清除的线程缓存。

最佳答案

我认为您正在考虑 memoization .来自维基百科:

In computing, memoization is an optimization technique used primarily to speed up computer programs by storing the results of expensive function calls and returning the cached result when the same inputs occur again.

关于c++ - 这种优化有名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33190140/

相关文章:

c++ - 当数字可能溢出C++中特定数据类型的范围时如何处理异常?

Java,最昂贵的语句?

Eclipse 优化

c++ - 放宽执行顺序规则

c++ - 使用 vector 时的内存管理

c++ - 在cpp文件中初始化一个私有(private)静态成员变量。错误 : member is private

c++ - 何时在 C++ 中使用字符数组而不是字符串?

java - Spring Boot 异步与多线程

条件变量与信号量示例

java - 生产者-消费者生产一件元素并立即消费(Java)