在为效率而设计的数据结构中,如果经常使用临时 int 或 float,是否最好将其设为字段?

发布于 2024-12-19 05:07:21 字数 204 浏览 1 评论 0原文

更多背景知识,我有一个数据结构,当删除或添加或只是检索时,我暂时使用浮点作为方法中的临时存储。与其在内存中请求一个新位置来放置此浮点数,并且让垃圾收集器必须在几行后收集它,不如将空间保留为字段,然后我们只需更改该值,而不是更好必须不断地浪费时间进行垃圾收集和重新分配内存空间?

在我在 Android 上执行此操作的情况下,垃圾收集器很痛苦,而我可以保存的每个对象都有很大帮助。

A little more background, I have a data structure that when removing or adding or simply retrieving I temporarily use a float as temporary storage in the methods. Instead of asking for a new spot in memory to put this float, and have the garbage collector have to collect it a few lines later, would it be better to reserve the space as a field, then we are simply changing the value, and not having to constantly waste time with garbage collection and reallocating memory space?

In the situation I am doing this on is Android, and that garbage collector is a pain and every object I can save significantly helps.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

滥情稳全场 2024-12-26 05:07:21

不,只需使用局部变量即可达到此目的。传统上,局部变量在过程堆栈帧中分配一个位置,或者可能只是在机器寄存器中分配一个位置。在任何一种情况下,与垃圾收集器的交互都不是问题:当堆栈帧被弹出并弹出时,变量存储就会消失。程序返回。

No, just use a local variable for this purpose. Traditionally a local variable is allocated a place in the procedure stack frame or possibly just in a machine register. In either case, the interaction with a garbage collector is a nonissue: the variable storage goes away when the stack frame is popped & the procedure returns.

怪我鬧 2024-12-26 05:07:21

您不应该使用实例变量作为方法的临时位置。

  • 实例变量占用对象上的空间;即他们把它做得更大。只要对象存在,就会使用该空间。实例的数量可能多于对方法的调用,因此即使有充分的理由这样做,将临时变量放入实例变量中很可能会比替代方案使用更多的空间,时间更长。

  • 实例变量由使用特定实例的所有线程共享,也由同一线程中对象的可重入(递归)调用共享。如果使用它们来保存临时变量,则存在一个方法调用/线程干扰另一个方法调用/线程的风险。

请改用局部变量。这就是他们的目的。

You shouldn't use instance variables for temporary locations for methods.

  • Instance variables occupy space on the object; i.e. they make it bigger. The space is used as long as the object exists. There are likely to be more instances than there are calls to a method, so even if there was a sound reason to do this, putting temporaries into instance variables would most likely use more space for longer than the alternative.

  • Instance variables are shared by all threads that use a particular instance, and also by reentrant (recursive) calls on an object in the same thread. If you use them to hold temporaries, you risk one method call / thread interfering with another.

Use local variables instead. That's what they are intended for.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文