Tag: 循环

了解jvm中的循环性能

我正在玩jmh ,在关于循环的部分,他们说 您可能会注意到重复计数越大,所测量操作的“感知”成本就越低。 到目前为止,我们每增加1/20 ns,远远超出硬件实际可行的范围。 发生这种情况是因为循环被大量展开/流水线化 ,并且要从循环中提升要测量的操作。 士气:不要过度使用循环,依靠JMH来正确测量。 我亲自尝试过 @Benchmark @OperationsPerInvocation(1) public int measurewrong_1() { return reps(1); } @Benchmark @OperationsPerInvocation(1000) public int measurewrong_1000() { return reps(1000); } 得到以下结果: Benchmark Mode Cnt Score Error Units MyBenchmark.measurewrong_1 avgt 15 2.425 ± 0.137 ns/op MyBenchmark.measurewrong_1000 avgt 15 0.036 ± 0.001 ns/op 它确实表明MyBenchmark.measurewrong_1000比MyBenchmark.measurewrong_1 。 但我无法真正理解JVM的优化,以提高性能。 他们的意思是循环展开/流水线 ?

我需要帮助编写一个程序,使用嵌套循环在一行上打印出两个形状

这是形状应该是什么样子: 这是我到目前为止的代码: public class Diamonds { public static void main(String[] args) { for (int i = 1; i < 10; i += 2) { for (int j = 0; j < 9 – i / 2; j++) { System.out.print(" "); } for (int j = 0; j 0; i -= 2) { for (int j […]

为什么Java禁止inheritance内部接口?

即为什么以下“循环依赖”不可能? public class Something implements Behavior { public interface Behavior { // … } } 由于接口不引用外部类,因此应该允许; 但是,编译器迫使我在类外定义那些接口。 这种行为有合理的解释吗?

在java中,我如何找到第n个Fibonacci数?

确定Fibonacci序列很容易弄清楚: int num = 0; int num2 = 1; int loop; int fibonacci; System.out.print(num2); for (loop = 1; loop <= 10; loop ++) { fibonacci = num + num2; num = num2; num2 = fibonacci; System.out.print(" " + fibonacci); } 我的问题在于试图精确定位指定N的值。如果我想在序列中找到第6个元素,即8,我怎么能找到那个数字,只有那个数字?

如何执行int 数组的总和

给定10个ints的数组A ,初始化一个名为sum的局部变量,并使用循环查找数组A中所有数字的总和。 这是我提交的答案: sum = 0; while( A, < 10) { sum = sum += A; } 我对这个问题没有任何意见。 我做错了什么?

可变数量的嵌套循环

我在java中做了一个单词解码器。 现在我有一个程序,可以打印从3个或更多字母(没有重复)的单词中选择的3个字母的所有重新排列。 因此,例如,如果参数是abcd ,它将打印此: [[abc,abd,acb,acd,adb,adc,bac,bad,bca,bcd,bda,bdc,cab,cad,cba,cbd,cda,cdb,dab,dac,dba,dbc,dca,dcb] ] 我正在使用排列填充2D数组列表。 现在,2D数组中只有一个数组,其中包含3个字母的排列。 我希望2D数组有1个字母,2个字母,3个字母等的permations数组,停止在单词的长度。 问题是我需要一个可变数量的嵌套for循环来完成这个。 对于3个字母的排列,我有3个嵌套for循环。 每个循环遍历参数中的字母。 public static void printAllPermuations(String word) { int len = word.length(); ArrayList lets = new ArrayList(); //this array of letters allows for easier access //so I don’t have to keep substringing for (int i = 0; i < len; i++) { lets.add(word.substring(i, i + […]

用java 8 API替换两个嵌套的for循环

我有以下片段,我想知道是否以及如何用Streams / Java 8 API替换它 for (State state : states) { for (City city : cities) { if (state.containsPoint(city.getLocation())) { System.out.printf(“%30s is part of %-30s\n”, city.getName(), state.getName()); } } }

使用System.currentTimeMillis()每秒运行代码

我试图通过使用System.currentTimeMillis();每秒运行一行代码。 代码: while(true){ long var = System.currentTimeMillis() / 1000; double var2 = var %2; if(var2 == 1.0){ //code to run }//If(): }//While 我想运行的代码运行多次,因为无限的整个循环将var2多次设置为1.0。 我只想在var2首次设置为1.0时运行代码行,然后每当var2在0.0之后变为1.0时再运行一次。

对于Java HashMap上的每个循环

我写的基本聊天程序有几个关键词,可以生成特殊的动作,图像,消息等。我将所有关键词和特殊函数存储在HashMap中。 关键词是键,function是值。 我想将用户输入与键与某种类型的循环进行比较。 我已经尝试了我能想到的一切,没有任何作用。 这是我能弄清楚的: myHashMap = for(String currentKey : ){ if(user.getInput().equalsIgnoreCase(currentKey)){ //Do related Value action } } … 我将不胜感激任何帮助。 如果我忽略了类似的问题或答案是否明显,请原谅我。

即使我回收位图,内存使用量也不会减少

我有A和B活动。 当我从活动A开始活动B时,我在活动B上设置静态位图变量。我在屏幕上显示该位图并旋转它。 当活动B完成后,我在onDestroy()方法上回收所有位图,但内存使用量没有减少。 @Override protected void onDestroy() { super.onDestroy(); if (bitmap90 != null) { bitmap90.recycle(); bitmap90 = null; } if (bitmap180 != null) { bitmap180.recycle(); bitmap180 = null; } if (bitmap270 != null) { bitmap270.recycle(); bitmap270 = null; } if (mBitmap != null) { mBitmap.recycle(); mBitmap = null; } if (((BitmapDrawable) ivOriginal.getDrawable()).getBitmap() != null) { […]