我在大型代码库上工作,并且在分析大部分时间时,仅仅在锁争用和在地图中进行查找。该系统是由来自传入数据流的回调驱动的实时系统。许多线程获得回调。 (很多消费者)。
通常使用字符串(键)调用回调函数,然后从回调中调用许多函数。而这些功能本身就调用了许多功能。
这些函数中的许多函数或子函数都会进行查找,通常每次查找相同的字符串。 (最初传递给回调的字符串)。
明显的优化是进行一次查找,然后将找到的调用链作为参数传递。但问题是这将涉及更改大量代码和函数签名。
因此,一个解决方案是在回调函数中将查找值保存在全局结构中,将threadid映射到查找值。 Threadid是一个int和少于100的线程数,因此查找线程id比字符串查找更快。
这种技术有名字吗?它就像一个在调用链顶部清除的线程缓存。
答案 0 :(得分:1)
我认为你在想memoization。来自维基百科:
在计算中,memoization是一种优化技术,主要用于通过存储昂贵的函数调用的结果来加速计算机程序,并在再次出现相同的输入时返回缓存的结果。