Tag: 性能

为什么MongoDB中的索引方向很重要?

引用文档 : 创build索引时,与键关联的数字指定索引的方向,所以它应该始终为1(升序)或-1(降序)。 方向对单键索引或随机访问检索无关紧要,但对于复合索引进行sorting或范围查询非常重要。 但是,我看不出为什么指数的方向对复合指标有影响。 有人可以提供进一步的解释(或例子)?

如果登记册太快了,为什么我们没有更多呢?

在32位,我们有8个“通用”寄存器。 与64位,金额翻倍,但它似乎独立于64位变化本身。 现在,如果寄存器速度如此之快(没有内存访问),为什么自然不会有更多? CPU制造商不应该将尽可能多的寄存器工作到CPU中吗? 为什么我们只有我们拥有的金额有什么逻辑限制?

在JavaScript中连接string的最佳方法是什么?

在JavaScript中,我有一个有很多迭代的循环,并且在每次迭代中,我都创build了一个有很多+=运算符的巨大string。 有没有更有效的方法来创build一个string? 我正在考虑创build一个dynamic数组,我不断向其中添加string,然后进行连接。 任何人都可以解释,并给出一个最好的方法来做到这一点的例子? 谢谢。

Java 8:Streams vs Collections的性能

我是Java 8的新手。我还是不太了解这个API,但是我做了一个小的非正式的基准testing来比较新的Streams API和旧版本的性能。 testing包括过滤Integer列表,并为每个偶数计算平方根并将其存储在Double的结果List中。 这里是代码: public static void main(String[] args) { //Calculating square root of even numbers from 1 to N int min = 1; int max = 1000000; List<Integer> sourceList = new ArrayList<>(); for (int i = min; i < max; i++) { sourceList.add(i); } List<Double> result = new LinkedList<>(); //Collections approach long t0 […]

优化Kohana网站的速度和可扩展性

我和Kohana一起build造的一个地方昨天遭到了大量的交通,让我退后一步,评估一些devise。 我很好奇什么是一些优化Kohana应用程序的标准技术? 我也对基准感兴趣。 我是否需要为每个控制器方法设置Benchmark::start()和Benchmark::stop() ,以便查看所有页面的执行时间,还是能够快速地应用基准testing? 我会更及时地使用Cache-library,但是我可以提供更多的build议,因为我确信有很多我可以做的事情,目前我根本没有意识到。

Kotlin – 使用“懒”与“lateinit”的属性初始化

在Kotlin中,如果您不想在构造函数或类体顶部启动类属性,则基本上有以下两个选项(来自语言参考): 延迟初始化 lazy()是一个函数,它接受一个lambda并返回一个Lazy实例,它可以作为实现一个lazy属性的委托:get()的第一个调用执行传递给lazy()的lambda并记住结果,随后的调用得到()只是返回记忆的结果。 例 public class Hello{ val myLazyString: String by lazy { "Hello" }` } 所以第一个调用和次要的调用,无论它在哪里, myLazyString都会返回“Hello” 延迟初始化 通常,声明为具有非nulltypes的属性必须在构造函数中初始化。 但是,这往往不方便。 例如,可以通过dependency injection来初始化属性,也可以在unit testing的设置方法中初始化属性。 在这种情况下,你不能在构造函数中提供一个非null初始值设定项,但是当你引用一个类的内部属性的时候,你还是要避免使用null检查。 要处理这种情况,可以使用lateinit修饰符标记属性: public class MyTest { lateinit var subject: TestSubject @SetUp fun setup() { subject = TestSubject() } @Test fun test() { subject.method() } } 修饰符只能用于在类的主体内声明的var属性(不在主构造函数中),只有当属性没有自定义getter或setter时。 属性的types必须是非空的,并且不能是原始types。 那么,如何正确select这两个选项,既然他们都能解决同样的问题呢?

为什么.Net 4.0中的新元组types是引用types(类)而不是值types(结构体)

有没有人知道答案和/或有一个看法呢? 由于元组通常不会很大,所以我认为使用结构比类更有意义。 什么说你?

哪个更快:x << 1或x << 10?

我不想优化任何东西,我发誓,我只是想出于好奇而问这个问题。 我知道在大多数硬件上都有一个位移的汇编命令(例如shl , shr ),这是一个单一的命令。 但是,这有什么重要的(纳秒级或CPU-tact-wise)你转移了多less位。 换句话说,在任何一个CPU上,以下哪一项更快? x << 1; 和 x << 10; 请不要讨厌我这个问题。 🙂

x + =比x = x + a快吗?

我正在阅读Stroustrup的“C ++编程语言”,他说在两种方式中将某些东西添加到variables x = x + a; 和 x += a; 他更喜欢+=因为它最有可能更好的实施。 我认为他的意思是说它的工作也更快。 但是真的吗? 如果依赖于编译器和其他东西,我该如何检查?

鉴于jdk1.6及以上版本中的HashMaps导致multi = threading的问题,应该如何修复我的代码

我最近在stackoverflow中提出了一个问题,然后find答案。 最初的问题是除互斥锁或垃圾收集之外的什么机制能够减缓我的multithreadingJava程序? 我惊奇地发现HashMap已经在JDK1.6和JDK1.7之间进行了修改。 它现在有一段代码,可以使所有创buildHashMaps的线程同步。 JDK1.7.0_10中的代码行是 /**A randomizing value associated with this instance that is applied to hash code of keys to make hash collisions harder to find. */ transient final int hashSeed = sun.misc.Hashing.randomHashSeed(this); 哪个结束呼叫 protected int next(int bits) { long oldseed, nextseed; AtomicLong seed = this.seed; do { oldseed = seed.get(); nextseed = (oldseed […]