标签: memory-efficient

2D游戏中有效的碰撞算法?

我正在按照教程编写一个用Java 编写的炸弹人(这是我的第一个游戏).本教程建议使用以下代码检测冲突.

        for (int p=0; p<entities.size(); p++) {
            for (int s=p+1; s<entities.size(); s++) {
                Entity me = (Entity) entities.get(p);
                Entity him = (Entity) entities.get(s);

                if (me.collidesWith(him)) {
                    me.collidedWith(him);
                    him.collidedWith(me);
                }
            }
Run Code Online (Sandbox Code Playgroud)

到目前为止,实体是一个包含敌人和玩家的数组列表.因为我还想检测玩家与墙壁发生碰撞,我是否应该将每个墙壁或砖块放入实体arraylist中?如果是这样,这个算法效率不高吗?这些瓷砖不会与其他瓷砖碰撞,所以我想在不同的列表中管理游戏实体.你有什么建议?有没有更有效的算法呢?

注意:我已经阅读了与2D游戏中的碰撞有关的其他问题.非常感谢.

java 2d collision-detection memory-efficient

4
推荐指数
1
解决办法
6418
查看次数

你应该为if语句创建变量吗?

我想知道,技术上最有效的方法是什么.

什么会更聪明的代码:

    if (args[0].toLowerCase().toString().equals("server")) {
        System.out.println("SERVER");
    }
Run Code Online (Sandbox Code Playgroud)

要么:

    String host = args[0].toLowerCase();

    if (host.equals("server")) {
        System.out.println("SERVER");
    }
Run Code Online (Sandbox Code Playgroud)

请记住,我知道这个变量是多余的.而且一个参数也可以包含一个数字,但这不是我的问题.这只是一个例子.

什么时候应该为if语句创建变量?总是?它更安全吗?我不应该这样做,因为我在浪费记忆吗?它会影响性能吗?

java performance if-statement memory-efficient

4
推荐指数
2
解决办法
93
查看次数

在Windows中基于修改日期删除数百万个文件的最有效方法

目标:使用脚本运行500万--1000万个XML文件并评估其日期,如果超过90天,则删除该文件.该脚本将每天运行.

问题:使用powershell Get-ChildItem -recurse会导致脚本锁定并且无法删除任何文件,我认为这是因为Get-ChildItem需要在对任何文件执行任何操作之前构建整个阵列.

解决方案?:经过大量研究后,我发现[System.IO.Directory] ​​:: EnumerateFiles能够在数组完全构建之前对数组中的项采取操作,这样可以提高效率(https:// msdn .microsoft.com/library/dd383458%28v = vs.100%29.aspx).经过更多测试后,我发现它foreach ($1 in $2)$1 | % {} 以前运行这个新代码更有效率并且可能再次崩溃这个服务器是否有任何调整任何人可以建议更有效的方法来编写脚本?

为了测试,我刚刚在15,000个目录中创建了15,000 x 0.02KB txt文件,其中包含随机数据并运行以下代码,我在$date变量上使用90秒而不是90天仅用于测试,删除所有txt需要6秒文件.

$getfiles = [System.IO.Directory]::EnumerateFiles("C:\temp", "*.txt", "AllDirectories")
$date = ([System.DateTime]::Now).AddSeconds(-90)
foreach ($2 in $getfiles) {
if ([System.IO.File]::GetLastWriteTime($2) -le $date) {
[System.IO.File]::Delete($2)
} #if
} #foreach
Run Code Online (Sandbox Code Playgroud)

powershell datetime delete-file memory-efficient

4
推荐指数
2
解决办法
8075
查看次数

什么更有效?检查==或只是改变变量?

想象一下,我有一个名为X的变量.让我们说每5秒我想让X =真.(在这5秒之间可能是真或假,但是当5秒钟时,它会重置为真).

检查值是否已经为真是否更有效,如果不是,则将其重新分配为true?或者只是X =真?

换句话说,哪个会运行得更快?

if(x==false){
    x = true;
}
Run Code Online (Sandbox Code Playgroud)

VS

x = true;
Run Code Online (Sandbox Code Playgroud)

一方面,如果不必要,第一个程序不会改变变量.另一方面,第二个程序不需要检查X等于什么; 它直接潜入.

javascript performance actionscript memory-efficient

3
推荐指数
1
解决办法
182
查看次数

随机化数组的有效方法 - 随机码

我在接受采访时被问到这个问题而且我提供了各种解决方案,但面试官并不相信.我有兴趣找到解决方案.请提出你的看法:

问:编写一个有效的数据结构来实现ipod中的shuffle.它必须播放所有歌曲,每次以不同的随机顺序播放,同一首歌不应该重复.(主要是O(n))

一个解决方案,我在采访后想到了:我可以做一个随机的快速排序,没有递归.我们随机选择1个轴O(1)然后做快速排序O(n).现在歌曲将按某种顺序排序,然后我将它们播放到最后.一旦它到达终点,我将再次选择一个随机的枢轴,并一次又一次地重复这个过程.

此致,Sethu

random performance memory-efficient data-structures

3
推荐指数
2
解决办法
4794
查看次数

Android中的高效ListView

构建ListView使用尽可能少的内存的最佳方法是什么?这很重要,因为我遇到了一些实现,当我滚动ListView低端设备时,大部分都落后了,但我看到了一些应用程序,滚动非常流畅,即使在低端设备上也是如此.怎么做到呢?从内存使用的角度来看构建这样一个最有效的方法是ListView什么?

android memory-efficient android-listview

3
推荐指数
1
解决办法
5108
查看次数

简单的Java程序越来越消耗内存

我有这个简单的Java代码,它创建一个JFrame实例并显示它.此链接包含jconsole采用的内存消耗图表的屏幕截图

在此输入图像描述

令我担心的是,任务管理器中的java.exe显示内存使用率以每8-9秒4-5 kbs的速率不断增加.需要帮忙

import javax.swing.*;

class MyGUI extends JFrame
{
    public void makeGUI()
    {
        setLayout(null);
        setSize(500, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
}

public class Launcher
{
    public static void main(String []args)
    {
        SwingUtilities.invokeLater(new Runnable()
                    {
                       public void run()
                       {
                        new MyGUI().makeGUI();
                       }
                    });
    }
}
Run Code Online (Sandbox Code Playgroud)

java swing memory-consumption memory-efficient

3
推荐指数
1
解决办法
1368
查看次数

获取python迭代器的第一个和最后一个元素的最快方法

我正在尝试对交互器的第一个和最后一个元素执行检查.它有几千个条目,所以我需要一种快速的检查方法.如果发现这篇文章,那就把我放到了这个策略上.

first = True
for value in iterator:
   if first:
      do_stuff_to_first_iter
      first = False
   else:
      pass
do_stuff_to_last_iter
Run Code Online (Sandbox Code Playgroud)

有没有人对更快的方法有任何意见?非常感谢!

python iterator memory-efficient

3
推荐指数
1
解决办法
6102
查看次数

更有效的查询以避免Hive中的OutOfMemoryError

我收到java.lang.OutOfMemoryError:Hive中超出了GC开销限制。在搜索中,我发现这是因为该进程所有CPU时间的98%将进行垃圾回收(这意味着什么?)。是我查询中问题的核心吗?为避免此类问题,我是否应该以其他方式写以下内容?

我正在尝试计算在给定时间段内有多少种特定的电话类型具有有效的“使用”状态。有没有办法以不同的方式来做这种逻辑,那会更好?

select count(a.imei)
from
(Select distinct imei
from pingdata
where timestamp between TO_DATE("2016-06-01") AND TO_DATE("2016-07-17")
and ((SUBSTR(imei,12,2) = "04") or (SUBSTR(imei,12,2) = "05")) ) a
join
(SELECT distinct imei
FROM eventdata
where timestamp between TO_DATE("2016-06-01") AND TO_DATE("2016-07-17")
AND event = "Use" AND clientversion like '3.2%') b
on a.imei=b.imei
Run Code Online (Sandbox Code Playgroud)

谢谢

performance hadoop hive out-of-memory memory-efficient

3
推荐指数
1
解决办法
423
查看次数

switch语句中使用break和return哪个更好?

我想知道在 switch 语句中使用break或return时的一些区别。哪个更有效率?有人可以向我解释一下吗?非常感谢。代码如下:

public void foo(){
    int i = 10;
    switch (i) {
        case 1: {
            //code here
            break;  //or return;
        }
        case 2: {
            //code here
            break;  //or return;
        }
        // code  code
        // code  code
        // code  code
        case 10:{
            //code here
            break;  //or return;
        }
        default:{
            //code here
            break;  //or return;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java switch-statement memory-efficient

3
推荐指数
1
解决办法
1万
查看次数