标签: for-loop

如何优化Scala中的for-understanding和循环?

所以Scala应该和Java一样快.我正在重新审视我最初用Java解决的Scala中的一些Project Euler问题.具体问题5:"从1到20的所有数字均可被整除的最小正数是多少?"

这是我的Java解决方案,在我的机器上完成需要0.7秒:

public class P005_evenly_divisible implements Runnable{
    final int t = 20;

    public void run() {
        int i = 10;
        while(!isEvenlyDivisible(i, t)){
            i += 2;
        }
        System.out.println(i);
    }

    boolean isEvenlyDivisible(int a, int b){
        for (int i = 2; i <= b; i++) {
            if (a % i != 0) 
                return false;
        }
        return true;
    }

    public static void main(String[] args) {
        new P005_evenly_divisible().run();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我对Scala的"直接翻译",需要103秒(147倍!)

object P005_JavaStyle {
    val t:Int = 20;
    def run {
        var …
Run Code Online (Sandbox Code Playgroud)

java performance for-loop scala while-loop

131
推荐指数
5
解决办法
2万
查看次数

列表推导和功能函数是否比"for loops"更快?

在Python的性能方面,是一个列表理解,还是比for循环更快的map(),filter()和reduce()等函数?从技术上讲,为什么它们"以C速度运行",而"for循环以python虚拟机速度运行"?

假设在我正在开发的游戏中,我需要使用for循环绘制复杂且巨大的地图.这个问题肯定是相关的,因为如果列表理解确实更快,那么为了避免滞后(尽管代码的视觉复杂性),这将是一个更好的选择.

python performance for-loop list-comprehension map-function

130
推荐指数
7
解决办法
7万
查看次数

带有索引的Java 8 forEach

有没有办法forEach在Java 8中构建一个使用索引进行迭代的方法?理想情况下,我喜欢这样的事情:

params.forEach((idx, e) -> query.bind(idx, e));
Run Code Online (Sandbox Code Playgroud)

我现在能做的最好的事情是:

int idx = 0;
params.forEach(e -> {
  query.bind(idx, e);
  idx++;
});
Run Code Online (Sandbox Code Playgroud)

java foreach for-loop java-8

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

如何在Javascript中循环键入/值对象?

var user = {};
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个setUsers()接受键/值对对象并初始化user变量的方法.

setUsers = function(data) {     
   // loop and init user    
}
Run Code Online (Sandbox Code Playgroud)

数据如下:

234: "john", 23421: "smith", ....
Run Code Online (Sandbox Code Playgroud)

javascript iteration loops for-loop key-value

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

在PHP中FOR FOR FOR FORACH的性能

首先,我理解90%的应用程序中性能差异完全不相关,但我只需要知道哪个是更快的构造.那......

目前在网上提供的信息令人困惑.很多人说foreach很糟糕,但从技术上来说它应该更快,因为它假设使用迭代器简化了数组遍历的编写.迭代器,再次假设更快,但在PHP中也显然死得很慢(或者这不是PHP的东西?).我在谈论数组函数:next()prev()reset()等等,如果它们是偶数函数而不是那些看起来像函数的PHP语言特性之一.

为了缩小这个范围:我在以超过1的步长遍历数组时没有兴趣(也没有负步骤,即反向迭代).我也对从任意点到任意点的遍历不感兴趣,只有0到长度.我也没有看到定期操作超过1000个键的数组,但我确实看到一个数组在应用程序的逻辑中被遍历了多次!另外,对于操作,主要是字符串操作和回声.

以下是一些参考站点:
http://www.phpbench.com/
http://www.php.lt/benchmark/phpbench.php

我到处听到的内容:

  • foreach很慢,因此for/ while更快
  • PHP foreach复制它迭代的数组; 为了使它更快你需要使用引用
  • 像这样的代码:比a更快$key = array_keys($aHash); $size = sizeOf($key);
    for ($i=0; $i < $size; $i++)
    foreach

这是我的问题.我写了这个测试脚本:http://pastebin.com/1ZgK07US,无论我运行脚本多少次,我得到这样的东西:

foreach 1.1438131332397
foreach (using reference) 1.2919359207153
for 1.4262869358063
foreach (hash table) 1.5696921348572
for (hash table) 2.4778981208801
Run Code Online (Sandbox Code Playgroud)

简而言之:

  • foreachforeach参考更快
  • foreach 比...更快 for
  • foreachfor比哈希表更快

谁能解释一下?

  1. 难道我做错了什么?
  2. PHP foreach引用的东西真的有所作为吗?我的意思是,如果你通过引用传递它为什么不复制它?
  3. foreach语句的等效迭代器代码是什么; 我在网上看到了一些,但每次我测试它们的时机都是关闭的; 我还测试了一些简单的迭代器结构,但似乎从来没有得到过不错的结果 - PHP中的数组迭代器是不是很糟糕?
  4. 是否有更快的方法/方法/构造来迭代除FOR/FOREACH(和WHILE)之外的数组?

PHP版本5.3.0


编辑:答案 在这里的人的帮助下,我能够拼凑出所有问题的答案.我在这里总结一下:

  1. "难道我做错了什么?" …

php arrays performance foreach for-loop

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

如何在shell中为for循环添加前导零?

我有一个循环的基本数字,它在每次迭代时将变量num递增1 ...

for (( num=1; num<=5; num++ ))
do
 echo $num
done
Run Code Online (Sandbox Code Playgroud)

哪个输出:

1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)

我正在尝试让它产生输出(在$ num之前加上前导零):

01
02
03
04
05
Run Code Online (Sandbox Code Playgroud)

没有做:

echo 0$num
Run Code Online (Sandbox Code Playgroud)

bash for-loop

124
推荐指数
6
解决办法
12万
查看次数

如何用PHP打破外部循环?

我希望在PHP中打破外部for/foreach循环.

这可以在ActionScript中完成,如下所示:

top : for each(var i:MovieClip in movieClipArray)
{
    for each(var j:String in nameArray)
    {
        if(i.name == j) break top;
    }
}
Run Code Online (Sandbox Code Playgroud)

什么是PHP等价物?

php for-loop break

120
推荐指数
6
解决办法
5万
查看次数

使用'for'循环遍历C++ Vector

我是C++语言的新手.我已经开始使用向量,并且已经注意到在我看到的所有代码中通过索引迭代通过向量,for循环的第一个参数总是基于向量.在Java中,我可以使用ArrayList执行类似的操作:

for(int i=0; i < vector.size(); i++){
   vector[i].doSomething();
}
Run Code Online (Sandbox Code Playgroud)

有没有理由我在C++中没有看到这个?这是不好的做法吗?

c++ iterator for-loop coding-style

119
推荐指数
11
解决办法
39万
查看次数

在vb.net中嵌套/退出

如何退出vb.net中的嵌套for或循环?

我尝试使用exit,但它只跳转或断开一个for循环.

我怎样才能做到以下几点:

for each item in itemList
     for each item1 in itemList1
          if item1.text = "bla bla bla" then
                exit for
          end if
     end for
end for
Run Code Online (Sandbox Code Playgroud)

vb.net for-loop nested-loops

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

用于索引/键的...的TypeScript?

如此处所述, TypeScript引入了一个foreach循环:

var someArray = [9, 2, 5];
for (var item of someArray) {
    console.log(item); // 9,2,5
}
Run Code Online (Sandbox Code Playgroud)

但是没有任何索引/密钥吗?我希望有类似的东西:

for (var item, key of someArray) { ... }
Run Code Online (Sandbox Code Playgroud)

foreach for-loop typescript

118
推荐指数
5
解决办法
21万
查看次数