问题标签 [object-pooling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4192 浏览

c++ - 是否有开源线程安全的 C++ 对象池实现?

我需要创建一个套接字连接池,它将提供给多个工作线程。是否有功能类似于 Apache Commons 的线程安全对象池实现GenericObjectPool

0 投票
0 回答
129 浏览

c# - 递归调用方法(用于对象重用)

可能重复:
递归调用方法(用于对象重用目的)

我有一个相当大的类,其中包含大量字段(10+)、一个巨大的数组(100kb)和一些处理长时间运行的任务的非托管资源,我想在每次完成任务后一遍又一遍地重用它。下面的代码说明了这种情况:

这里的问题是,完成所有任务后,DoWork 永远不会返回。这会在某个时间点后导致库存溢出。我可以在 ThreadPool 上对 OnComplete 的调用进行排队,从而让 DoWork 返回并让运行时清除调用堆栈,但我不想使用额外的资源。对我来说最好的选择是什么?(假设任务进展是线性的)(DoWork 必须在另一个线程上执行)

0 投票
6 回答
2711 浏览

actionscript-3 - 在列表中查找复杂类型的最快方法(向量、数组、字典,任何更快的方法)

冰雹,堆栈!

我需要知道在复杂类型(对象和精灵的扩展)的列表(向量、数组、字典,任何更快的)中查找项目的最佳方法。
我使用了“干草堆中的针”方法,但似乎速度不够快。


例如,假设我有一组Sprite(实际上是一个池)。
每个精灵都会被添加到舞台并执行一些动作。在那之后,它会死去。
我不想支付处理它(垃圾收集)并每次创建另一个(新)的成本,所以我会将死去的精灵保存在一个集合中。

有时我会调用一个将精灵添加到舞台的方法。
这个 sprite 可以是旧的,如果它已经死了,或者是一个新的,如果池中没有任何空闲的 sprite。


将我推向这个问题的场景之一是粒子系统。
一个“头”粒子在每一帧留下一个粒子“轨迹”,然后爆炸成一大堆闪闪发光的粒子……每一帧……

有时,这需要多达 50.000 个 PNG,包括运动、旋转、alpha、事件调度、缩放等……
但是,这只是一个场景……


目前我正在尝试使用带有链接列表的对象池......
希望运行整个数组/向量或每帧创建新实例并让它们用垃圾收集染色会更快。

有人知道更好/更快的方法吗?

0 投票
1 回答
1616 浏览

c# - 如何在 C# 中实现可重用的对象池?

我正在处理流式套接字上的大量数据。数据被使用并留给 GC 清理。我想预先分配一个可重用的池并重用它以防止大量 GC。

谁能帮我?

0 投票
3 回答
980 浏览

php - PHP 池功能(不仅仅是数据库连接)

是否可以在 PHP 中汇集数据或功能?

我编写的业余 PHP 代码会唤醒以处理响应、加载函数、打开数据库连接、创建对象、初始化它们,然后 - 在处理完响应后 0.01 秒后死亡,让下一个请求重新加载,解析,然后再次运行主要相同的东西。

这是没有意义的,我发现它消除了我很多工作的价值,即没有功能/数据/对象池。例如,我可以编写类,发现它们都被每个请求重新初始化——我试图开发一个有意义的对象结构有什么意义?

所以:我如何编写 PHP 来汇集数据和功能?

0 投票
1 回答
585 浏览

java - java或EJB中的池概念?

我们在无状态 EJB 中有池化概念。使用池化有什么好处?我的理解是,它将节省对象创建的时间。这是正确的吗?如果是,创建对象或从现有池中获取对象的性能是否存在显着差异?池化是否有除此之外的任何其他目的?

0 投票
2 回答
2531 浏览

java - 需要有关 Memcached 池化的帮助

我有一个在多台服务器上运行的 Web 应用程序。我计划在这个应用程序中实现 Memcached,并使用 spymemcached 作为客户端。我创建了一个 memcached 客户端池。但我不确定从池中借用的客户端是否能够创建多个与 memcached 服务器的连接。

我想要一个客户端池中的客户端可以使用的连接池。如果这个方法没问题,那我应该如何进行实施呢?否则最好的方法应该是什么?

0 投票
1 回答
725 浏览

boost - 提升池替代 calloc

全部,

如果您使用 boost pool 库,您将如何替换以下语句:

如果是针对一个元素,我会这样做:

但由于“numOfElements”是一个变量,我觉得执行 malloc() 循环不是一个好主意?

0 投票
3 回答
9525 浏览

java - 如何限制 Java Web 应用程序中的 Web 服务调用

我的要求很容易理解。

我想从我的 Java Web 应用程序调用 Web 服务,限制为每分钟最多 10 个 Web 服务调用。1 分钟后,我可以再建立 10 个连接,而不管之前 10 个 Web 服务调用的状态(已完成或未完成)。

有人可以指导我实现这一点的方法吗?任何教程或有用的链接?

0 投票
1 回答
517 浏览

actionscript-3 - 用于音效的 AS3 对象池

我正在开发一款需要顶级音效的游戏。我为效果创建了一个对象池,以便能够重用它们。我的问题是我应该如何编写一个不错的池解决方案,而不必为每种声音类型创建一个池。pool 的 checkout 函数返回列表中的第一个声音。

这个肮脏的小解决方案检查我们从池中借来的项目是否具有我想要创建的相同声音。如果它是相同的声音,我不会再次创建声音。如果不是,即使我知道池中有正确声音的实例,我也会创建它。

这个肮脏的解决方案已将我的实例从数百个实例减少到大约七个实例,但我认为我可以对其进行更多优化。

我一直在考虑将声音名称传递给结帐功能,但是每次都必须遍历池真的值得吗?

有任何想法吗?