Tag: 性能

方法不必要地被调用?

我有一个BaseActivity,可以通过其他所有活动进行扩展。 问题是,每当用户离开(onPause)活动时,我都会将音乐静音。 我也不再听电话了。 问题是,只要用户在活动之间切换,就会调用onPause ,这意味着应用程序不必要地静音并停止telephonymanager ,即使它只是静音并且如果用户要离开应用程序就停止telephonymanager : @Override protected void onPause() { Log.v(TAG, “IN onPause!”); // unregister phone listener to telephony manager tManager.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE); mute(); super.onPause(); } 现在说我在public class myClass extends BaseActivity之间切换public class myClass extends BaseActivity并切换到public class myOtherClass extends BaseActivity 。 这个开关不必要地执行onPause ,即使我只想在用户离开应用程序时调用onPause 。 我该怎么办? 感谢您的专家建议, 丰富

Java Swing重/慢paintComponent – 任何建议?

我正在制作一个滚动的2D地图/平铺游戏。 每个图块(存储为图块[21] [11] – 每个图总共231个图块)最多可包含21个值(存储为int [3] [7])。 全屏时我一次看到大约8张地图。 平均而言,每个地图绘制大约需要0.03秒(使用System.nanoTime找到)。 问题是,只要屏幕上有多个地图,Swing事件轮询就会明显变慢。 这有什么解决方案吗? 我无法一次绘制地图以将其保存为图像,因为它具有涉及移动演员的透明度,因此它变化太频繁。 另外我不认为我可以在paintComponent中调用一个线程来绘制地图而不会出现故障,但我并不积极。

Java中的快速像素搜索

我有一个关于java中的像素搜索的问题。 目前,我的Class / Programm正逐像素地搜索,以减慢我的目的。 我不想Java更快地搜索像素,所以我开始想问你们。 我正在用RGB颜色搜索像素。 这是我的源代码: final int rot = 0; final int gruen = 0; final int blau = 0; int toleranz = 1; Color pixelFarbe; Dimension bildschirm = Toolkit.getDefaultToolkit().getScreenSize(); Robot roboter = null; try { roboter = new Robot(); } catch (AWTException e) { e.printStackTrace(); OrbitRaider.log(“Robot is not working.”); } for(int x […]

用Java复制和移动文件,解释和比较不同的方法

我实现了文件操作function,我注意到Java提供了多种复制和移动文件的技术。 您可以在下面找到代码片段,简要介绍这些方法: 方法#1: File from = new File(src.getPath()); File to = new File(dst.getPath()); from.renameTo(to); 方法#2: FileChannel inChannel = new FileInputStream(src).getChannel(); FileChannel outChannel = new FileOutputStream(dst).getChannel(); inChannel.transferTo(0, inChannel.size(), outChannel); 方法#3: InputStream in = getContentResolver().openInputStream(selectedImageUri); OutputStream out = new FileOutputStream(“/sdcard/wallpapers/” + wall); byte[] buffer = new byte[1024]; int read; while ((read = in.read(buffer)) != -1) { out.write(buffer, […]

访问修饰符如何影响Java中的性能?

在java编程中,使用protected或public的方法级访问修饰符可以使用private来以任何方式影响性能吗? 如果是这样,它会以什么方式影响运行时性能。

String to Number转换中的性能问题

我有空格分隔的字符串,其中包含数字,如: “abc123 ws32wd3 y3tg43 5tga89 a1a” 我必须解析字符串以获取每个标记的数字,然后总结从标记中提取的所有数字。 我写了下面的代码,但我认为,如果有大字符串,那么可能存在性能问题。 所以,我的问题是: 我们如何改进以下代码的性能? 我们是否有另一种方法来编写以下代码来解决问题? 码: public class TestSum { public static int doSum(String str){ String[] sArray = str.split(” “); char[] chr = null; String temp; String number = “”; int sum=0; for(String s : sArray){ chr = s.toCharArray(); for(char c : chr){ temp = String.valueOf(c); if(isNum(temp)){ number = […]

Java中的toString覆盖

这个问题来自作业。 我必须在创建循环链接列表的类中覆盖toString()方法,实际上我有一个工作得很好的toString()方法,它将所有测试都传递给所有东西。 所以我的项目是自动进行的,它显然不赞成我的方法100%。 所以我的问题是:有没有更好的方法来编写这个更有效的toString()方法? public String toString() { if (size == 0) { return “[]”; } else { String output = “”; Node tempNode = actualElement; while (tempNode.next() != actualElement) { if (output.equals(“”)) { output = “[” + output + tempNode.data().toString(); tempNode = tempNode.next(); } else { output = output + “, ” + tempNode.data().toString(); […]

调用Thread.sleep()后,System.nanoTime()测量经过的时间的准确度会降低

我在这里遇到一个非常不寻常的问题。 似乎调用Thread.sleep(n),其中n> 0将导致以下System.nanoTime()调用不太可预测。 下面的代码演示了这个问题。 在我的计算机上运行它(rMBP 15“2015,OS X 10.11,jre 1.8.0_40-b26)输出以下结果: Control: 48497 Random: 36719 Thread.sleep(0): 48044 Thread.sleep(1): 832271 在运行Windows 8的虚拟机上(VMware Horizo​​n,Windows 8.1,为1.8.0_60-b27): Control: 98974 Random: 61019 Thread.sleep(0): 115623 Thread.sleep(1): 282451 但是,在企业服务器上运行它(VMware,RHEL 6.7,jre 1.6.0_45-b06): Control: 1385670 Random: 1202695 Thread.sleep(0): 1393994 Thread.sleep(1): 1413220 令人惊讶的是我期望的结果。 很明显,Thread.sleep(1)会影响下面代码的计算。 我不知道为什么会这样。 有人有线索吗? 谢谢! public class Main { public static void main(String[] args) { […]

提高此方案性能的方法

我有一张填充了大量数据的地图(大约300,000条记录) 并按如下方式迭代, for (Map.Entry<String, List> entry : testMap .entrySet()) { // send email with map keys as email’id // email content is populated from the list // Perform a sql update to the column with the dyanamic value generated here with the email’id } 如上所述,我担心在for循环中执行的上述操作会导致性能问题。 更新: 情景是。 我正在迭代一个包含大量数据的地图, 迭代它我得到用户ID,我必须计算用户ID。例如,考虑userid+some constants ,这应该在数据库表中更新。 并且还应该与我的地图中的列表值一起添加到电子邮件内容中 所以我认为批量更新是不可能的,我的理解是正确的吗? 我应该遵循这种方法吗? 或者选择任何其他想法

创建一种通过网络发送整数的有效方法。 TCP

如何将整数值转换为字节数组,然后通过字节流将它们发送到客户端程序,该程序将字节数组转换回整数? 我的节目是乒乓球比赛。 一旦运行,它就会创建一个服务器,客户端现在使用对象流通过Internet连接到该服务器。 一切都运作良好,但似乎效率不高。 我的意思是球在试图通过更新循环保持同步时来回震动 。 我可能已经松散地编程了,但这是我能想到的最好的。 我希望有更多了解这种事情如何运作的人可以帮助我清除一些事情。 我的问题直截了当。 我需要知道更好的方式来更有效地在互联网上发送球位置和球员位置。 目前花费的时间太长了。 虽然,我可能会以错误的方式更新它。 流的构建方式: oostream = new ObjectOutputStream(new BufferedOutputStream(socket.getOutputStream())); oostream.flush(); oistream = new ObjectInputStream(new BufferedInputStream(socket.getInputStream())); 这是玩家2的更新循环: IntData id = new IntData(); while (running) { id.ballx = ballx; id.bally = bally; id.player2Y = player2Y; oostream.writeObject(id); oostream.flush(); Thread.sleep(updaterate); id = (IntData) oistream.readObject(); player1Y = id.player1Y; ballx = id.ballx; […]