问题标签 [objectpool]

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 投票
1 回答
161 浏览

android - Andengine - 对象池或通用池优化

我正在创建一个游戏,它会在某些时候生成许多精灵,例如子弹。我正在使用对象池,它是 andengine 中的通用池。但我面临的问题是第一次创建对象时它会滞后。至于第一次,当对象附加到场景时。当我一次附加 100 个精灵时,它会滞后。

所以我在想是否可以在加载场景时加载所有必需的对象并将其加载到池中。

现在我的代码如下..

请给我一些想法。

我可以在游戏前在池中加载 100 个对象(精灵),这样它就不会在游戏中间滞后为池创建新鲜的对象。

0 投票
1 回答
142 浏览

java - 设计模式:连接对象池

最近,我开始研究有关对象池设计模式的更多信息,但遇到了一些我无法找到答案的问题。

对象池模式的想法是通过重用资源来节省昂贵的资源。例如,与数据库的连接是一种非常昂贵的资源。因此我想将它添加到“池”中。

我一直被教导要尽可能少地保持连接打开。我可能会弄错这一切,但在我看来,创建一个新连接并使其长时间保持活动状态(在池中)只是浪费资源。连接可能不会多次创建,但它始终是打开的。

我很乐意得到解释。

0 投票
1 回答
843 浏览

c# - C# Protobuf .NET 使用预先存在的字节数组

所以我正在使用.NET 中的 Protobufs,并尝试将它们与缓冲池和 AsyncSocketEventArgs 池合并。缓冲池将大字节数组的部分分配给事件 args。

所以,问题是,我想不出一种方法让 Protobufs 直接序列化到我的一个缓冲区上。相反,所有方法似乎都序列化到自己的缓冲区上,这会浪费时间/内存......有什么方法可以做我正在寻找的事情吗?

编辑:我创建了一个原型方案,并生成了包含不完全序列化类的增量的消息,所以我相信使用属性/序列化器类对我没有帮助。我想将字节直接写入我的缓冲区之一。我相信 MemoryStream ,从我读过的内容来看,它仍然会指向一个创建的字节数组,这仍然会浪费大量的时间/内存。

0 投票
2 回答
587 浏览

java - 对象池与不可变对象

假设您正在使用一个简单的类并且对象创建并不繁重:

您必须不断地将简单对象放入队列中:

使用 Object-Pool 并更改 Simple-Class 可修改类是否更快?我希望不是。

0 投票
1 回答
175 浏览

java - java中的数组和链表

我创建了四个类

  • 对象池.java
  • 节点池.java
  • 节点.java
  • ArrayLinkedList.java

类 NodePool 继承自类 ObjectPool 并提供方法 create() 和 reset() 的实现。

类 Node 具有通常的双向链表成员:data、prev 和 next。ArrayLinkedList 类实现了一个 T 元素列表。数据元素存储在存储在底层 ArrayList 数组中的节点中。

这是我的代码:ObjectPool.Java

节点池.Java

ArrayLinkedList.java

问题是,代码中很少有事情没有完成,我不知道该怎么办。请纠正我做错了什么。

0 投票
0 回答
58 浏览

c++ - 从现代 C++ 设计中实现“小对象分配器”期间的指针比较问题

内存释放问题更大,因为在释放时缺少一条信息——我们只有一个释放指针,我们不知道该指针属于哪个 Chunk。我们可以遍历 chunks_ 并检查给定的指针是否落在 pData_ 和 pData_ + blockSize_ * numBlocks_ 之间。

来自现代 C++ 设计 2001,第 76 页

如果我的理解是正确的,用于检查给定指针是否指向给定数组中的元素的算法涉及比较来自不同数组的两个指针。如果比较运算符是 >= 或 <=(很有可能?),那么这将导致未定义的行为。

但是作者并没有明确说明这个程序或操作符,这将把这个问题留给读者。(还是作者搞错了?起码可以给个提示。)

一种解决方案是使用 !=,这将使释放速度慢 100 倍。或者,在某些情况下,某些未定义的行为是可以容忍的。那么在什么情况下,可以愉快地容忍上述未定义的行为呢?

0 投票
1 回答
1355 浏览

java - Java - 具有固定数量的对象的有效对象池要池化并使用等待通知

我正在尝试实现对象池,它具有固定数量的可用于池的对象,如果池为空,则使用等待,并在线程释放对象时通知。

我可以使用下面的程序来实现上述所需的功能。

我想知道实施是否正确或需要从面试的角度进行任何修改?

0 投票
1 回答
115 浏览

c++ - 智能指针对象池测试应用程序在完成/退出时失败

我在 Windows 的 Qt/C++11 中编写了一个多线程应用程序。
这个想法是使用智能指针从池中获取和回收一些字符串。
这是stringpool.cpp:

这是stringpool.h:

这是测试应用程序:

它编译好,它运行并产生以下结果:

程序输出

好吧,这个想法是应用程序运行(显然)OK。
但它完成后立即出现此错误:
带有 abort 的弹出窗口被称为 message
有谁知道我该如何解决这个问题?

0 投票
3 回答
282 浏览

design-patterns - 对象池模式是否需要在需要之前创建对象

如果我使用对象池设计模式,我是否必须在任何人需要它们之前创建对象,或者我只能在有人需要时创建每个对象,然后(在他使用它之后)将它放入池中?因此,从一个空池开始,然后随着时间的推移填充它,并且仅在有人需要使用它们并且它们当前不在池中时才创建对象?