1
4
如果要重用线程(如线程池中),则可以将DocumentBuilderFactory声明为线程本地的。为每个线程创建一个新的集合是有开销的,但是正如我所说,如果您要重用后续的开销是非常低的。
在这里,您将只为每个线程创建一个DocumentBuilderFactory。 我不知道在解析时documentbuilder是否是线程安全的(它是不可变的吗?)但是,如果在解析时documentbuilder是线程安全的,那么您可以使用与我所说的相同的机制。 这个解决方案将使总吞吐量尽可能快。 注意:这个没有经过测试或编译,只是给出了我所指的概念。 |
2
2
2)是线程安全的,但是你的应用程序一次只能解析一个文档。 为什么不使用你的代码呢?做
有明显不可接受的开销吗? |
3
1
如果要避免同步阻塞,应确保使用原子操作。行为
|
4
1
在类似的情况下,我遇到了一些性能问题。我在每次使用时都创建工厂对象以避免线程问题(每秒10次)。该(公认是旧的)平台中的XML实现为服务提供者类执行了一些相对较慢的查找逻辑。 我的调优是确定结果的答案,并通过命令行属性对其进行配置。这导致跳过了查找。
令人沮丧的是,如果找到一个类,查找代码就具有缓存逻辑。但没有缓存未命中(未找到任何内容,请使用默认值)。稍微好一点的查找缓存(处理了否定的情况)会使这种情况变得不必要。 这还需要吗?需要在您的环境中进行测试。我在Solaris上使用truss来注意到查找逻辑导致的非常频繁的文件操作。 |
Eric · fgets_unlocked()用于多线程读取不同文件 2 年前 |
RoyGNEU · 堆上的专用std::Vector是线程安全的吗? 2 年前 |
JaiK · 在c中使用线程或队列写入文件# 6 年前 |
Catalin Ghita · 如何以安全线程对象为值初始化哈希表? 6 年前 |
Juan JuezSarmiento · C++删除对象,是否锁定? 6 年前 |
Missa · 两个不同线程正在处理原子NSMutableArray 6 年前 |
user5682282 · 从其他线程读取值 6 年前 |