我知道,在下面的代码数组中,不是在每次循环迭代中都调用“Length”属性,因为Jit编译器足够聪明地将其识别为属性(而不是方法),并优化代码,使其只在内部存储临时变量中的值一次:
Int32[] myArr = new Int32[100];
for(Int32 index = 0; index < myArr.Length; index++) {
// Do something with the current item
}
因此,开发人员没有必要试图通过将长度缓存到局部变量来优化这一点。我的问题是:对于.Net中的所有集合类型都是正确的吗?例如,假设我有一个List并在For循环中
在hadoop中,如果你想对一些东西进行分组和排序,并且你编写了java,结果是组键也将默认按照字典顺序排序,所有这些都是通过一个MR作业来完成的,这样你就可以省去另一个排序作业。
但现在我加入了使用Pig的行列,发现了一个奇怪的东西。
我的输入(test.txt)是:
a
ab
abc
b
c
我的脚本是:
A=load 'test.txt' as c1:chararray;
B=group A by c1;
dump B;
输出为:
(a)
(b)
(c)
(ab)
(abc)
为什么它有组键顺序取决于字符
我有一个桌子订单和一个桌子订单。订单(基本上是与订单一起购买的物品)通过orderid (索引)链接到orders主键。
对于给定的一组订单,我需要订单。由于确定订单的条件是动态的,所以我需要使用子查询而不是联接,所以我写道:
SELECT *
FROM orderpositions
WHERE orderpositions.orderid IN
(
SELECT id FROM orders WHERE userid=118
);
(子查询可以是完全不同的东西,可能是嵌套的联接之类的,但是总是会返回订单I的列表,我需要链接的顺序。)
现在,它的运行速度明显慢于连接等价物(在本例中这是