我怎样才能提高terminal的光标速度? 顺便说一下,我有Mac OS X. 知道它对于Linux也是有趣的。 我不知道我应该在Google中search什么(或者你喜欢什么)。
我喜欢D的一些特性,但是如果它们带来运行时惩罚,会感兴趣吗? 为了比较,我实现了一个简单的程序,用C ++和D计算许多短vector的标量积。结果令人惊讶: D:18.9 s [参见下面的最终运行时间] C ++:3.8 s C ++的速度几乎快了五倍,还是我在D程序中犯了一个错误? 我使用g ++ -O3(gcc-snapshot 2011-02-19)编译了C ++,而在最新的linux桌面上编译了d与dmd -O(dmd 2.052)。 结果是可重现的几个运行和标准偏差可以忽略不计。 这里的C ++程序: #include <iostream> #include <random> #include <chrono> #include <string> #include <vector> #include <array> typedef std::chrono::duration<long, std::ratio<1, 1000>> millisecs; template <typename _T> long time_since(std::chrono::time_point<_T>& time) { long tm = std::chrono::duration_cast<millisecs>( std::chrono::system_clock::now() – time).count(); time = std::chrono::system_clock::now(); […]
如果你不得不遍历一个循环7次,你会使用: for (int i = 0; i < 7; i++) 要么: for (int i = 0; i <= 6; i++) 有两个考虑因素: 性能 可读性 为了performance我假设Java或C#。 如果使用“小于”或“小于或等于”,这是否重要? 如果你有不同的语言洞察力,请指出。 为了可读性,我假设了基于0的数组。 UPD:我提到基于0的数组可能会使事情混淆。 我不是在讨论数组元素的迭代。 只是一个普遍的循环。 下面有一个好的一点是使用一个常数来解释这个幻数是什么。 所以,如果我有“ int NUMBER_OF_THINGS = 7 ”,那么“ i <= NUMBER_OF_THINGS – 1 ”看起来很奇怪,不是吗?
我有一个使用Java 7编写的旧应用程序。它在Java 8 JRE中运行良好。 我不打算重写任何代码来使用Java 8function。 将编译代码升级到最新的Java 8 JDK是否有任何技术优势? 清楚的是,这些代码目前使用Java 7进行编译,并且已经与最新的Java 8 JRE一起运行。 它应该已经从Java 8运行时改进中受益。 这个问题是通过编译版本8并使用Java 8编译的字节码运行是否会有好处。 另外,我不关心开发人员的生产力等非技术性好处。 我认为这些是重要的,但不是这个问题的重点。 我要求的是没有开发团队的生产代码。 纯粹处于维护模式。
当您需要性能调优的查询或存储过程时,您尝试的第一件事是什么?
我正在查看sorted_containers的来源,很惊讶地看到这一行 : self._load, self._twice, self._half = load, load * 2, load >> 1 这里的load是一个整数。 为什么在一个地方使用位移,在另一个位置乘法? 移位可能比积分除以2快,但为什么不用一个移位来代替乘法呢? 我以下列情况为基准: (倍,分) (换class,换class) (时代,class次) (移位,除) 并发现#3始终比其他select更快: # self._load, self._twice, self._half = load, load * 2, load >> 1 import random import timeit import pandas as pd x = random.randint(10 ** 3, 10 ** 6) def test_naive(): a, b, c […]
我经常发现自己想从Django中的查询集中获取第一个对象,如果没有,则返回None 。 有很多方法可以做到这一切都工作。 但是我想知道哪个是最高性能的。 qs = MyModel.objects.filter(blah = blah) if qs.count() > 0: return qs[0] else: return None 这是否导致两个数据库调用? 这似乎是浪费。 这是否更快? qs = MyModel.objects.filter(blah = blah) if len(qs) > 0: return qs[0] else: return None 另一种select是: qs = MyModel.objects.filter(blah = blah) try: return qs[0] except IndexError: return None 这会生成一个单一的数据库调用,这是很好的。 但是需要在很多时候创build一个exception对象,当你真正需要的只是一个简单的if-test时,这是一个非常耗费内存的事情。 我怎样才能做到这一点,只需一个数据库调用,而不用exception对象搅动内存?
所以Scala应该和Java一样快。 我正在重新讨论我最初在Java中处理的Scala中的一些Project Euler问题。 具体问题5:“从1到20的所有数字均匀分布的最小正数是多less?” 这是我的Java解决scheme,需要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; } […]
Java教程说创build一个Thread是很昂贵的。 但是,为什么它是昂贵的? 当创build一个Java线程时,到底发生了什么事情呢? 我将这个陈述视为真实,但是我只是对JVM中创build线程的机制感兴趣。 线程生命周期开销。 线程创build和拆卸不是免费的。 实际开销因平台而异,但线程创build需要时间,在请求处理中引入延迟,并且需要JVM和OS进行一些处理活动。 如果请求是频繁和轻量级的,就像在大多数服务器应用程序中一样,为每个请求创build一个新的线程会消耗大量的计算资源 从Java的并发实践 Brian Goetz,Tim Peierls,Joshua Bloch,Joseph Bowbeer,David Holmes,Doug Lea 打印ISBN-10:0-321-34960-1
我知道这不是一个编程问题,而是相关的。 我在一个相当大的跨平台项目上工作 。 在Windows上,我使用VC ++ 2008.在Linux上,我使用gcc。 项目中有大约4万个文件。 在编译和链接相同的项目时,Windows的速度比Linux慢10倍到40倍。 我该如何解决这个问题? 在Linux上进行单个更改增量构build20秒,在Windows上进行> 3分钟。 为什么? 我甚至可以在Linux中安装“黄金”链接器,把时间缩短到7秒。 同样的,git在Linux上的速度是Windows的10倍到40倍。 在git的情况下,可能git不是以最佳方式使用Windows,而是使用VC ++? 你可能会认为微软希望自己的开发人员尽可能富有成效,而编译速度会更快。 也许他们试图鼓励开发人员进入C#? 作为简单的testing,find一个有很多子文件夹的文件夹,并做一个简单的 dir /s > c:\list.txt 在Windows上。 做两次,第二次运行时,它从caching运行。 将文件复制到Linux,并执行等同的2次运行和第二次运行。 ls -R > /tmp/list.txt 我有两个工作站完全相同的规格。 惠普Z600s 12gig ram,8核3.0ghz。 在具有〜400k文件的文件夹中,Windows需要40秒,Linux需要<1秒。 有没有我可以设置加快Windows的registry设置? 是什么赋予了? 一些稍微相关的链接,与编译时间有关,不一定是I / O。 显然,在Windows 10(不是在Windows 7)中存在一个问题,即closures一个进程会导致全局locking 。 当编译多个核心,因此多个进程,这个问题发生。 /analyse选项可能会对perf性能产生负面影响,因为它会加载Web浏览器 。 (不相关,但很好知道)