Tag: 性能

在sortingmatrix(行n列)中查找O(log n)

说我有一个matrix( MxN )的行和列sorting。 每一行中的所有元素按照递增顺序排列 每列中的所有元素都按照顺序排列 所有元素都是整数 没有其他假设可以做出 例: [1 5 8 20] [2 9 19 21] [12 15 25 30] 我必须find一个给定的数字是否存在于matrix中(基本search)。 我有一个algorithm运行O(n) int row = 0; int col = N-1; while (row < M && col >= 0) { if (mat[row][col] == elem) { return true; } else if (mat[row][col] > elem) { col–; } […]

为什么我应该使用断言?

我从来没有断言的想法 – 你为什么要使用它们? 我的意思是,假设我是公式驱动者,所有的断言都是安全带,头盔等等。 testing(在debugging中)都可以,但现在我们要做赛车(发布)! 我们是否应该放弃所有的安全措施,因为testing时没有问题? 我永远不会删除它们。 我认为大多数声称去掉可比较的断言的人绝不会描述他们的代码或断言是绝对的stream离失所。 我从来没有见过任何真正的性能优势,特别是在80/20规则。 那么,我是不是也错过了这个观点,或者有人可以告诉我,为什么我要使用断言? 顺便说一句,我正在使用unit testing。

_.isFunction(a)与typeof a ==='function'? JavaScript的

我认为这可能只是性能的情况下 – http://jsperf.com/comparing-underscore-js-isfunction-with-typeof-function/2 而且似乎typeof更快..所以我的问题是 – 哪个更适合使用?

将一个std :: vector追加到另一个std :: vector的最有效方法是什么?

设v1为目标vector,v2需要追加到它的后面。 我现在在做: v1.reserve(v1.size() + v2.size()); copy(v2.begin(), v2.end(), back_inserter(v1)); 这是最有效的方法吗? 或者可以通过复制一块内存来完成? 谢谢!

SourceTree与很多存储库很慢

我每天在很多小项目上工作,需要经常切换。 我在Sourcetree中有超过50个Git存储库。 通常有5个项目在“标签”中打开。 从SourceTree中的“Tab”切换非常缓慢。 有时达15秒。 我怎样才能改善这种行为?

数组与ArrayList的性能

在Objecttypes的Array和Objecttypes的ArrayList之间,哪一个性能更好? 假设我们有一个Animal对象数组: Animal animal[]和一个ArrayList list<Animal> : ArrayList list<Animal> 现在我正在做animal[10]和list.get(10)哪一个更快,为什么?

Javareflection的更快捷的select

正如我们所知,reflection是一种灵活而缓慢的方法,可以在运行时维护和修改代码的行为。 但是,如果我们必须使用这样的function,那么与reflectionAPI相比,Java中是否有更快的编程技术用于dynamic修改? 这些替代品的反面反思有什么优点和缺点?

Java 8的stream:为什么并行stream更慢?

我正在玩Java 8的stream,不能理解我得到的性能结果。 我有2核心CPU(英特尔i73520M),Windows 8的64位和64位Java 8更新5.我正在做简单的地图串stream/并行串stream,发现并行版本有点慢。 当我运行这个代码: String[] array = new String[1000000]; Arrays.fill(array, "AbabagalamagA"); Stream<String> stream = Arrays.stream(array); long time1 = System.nanoTime(); List<String> list = stream.map((x) -> x.toLowerCase()).collect(Collectors.toList()); long time2 = System.nanoTime(); System.out.println((time2 – time1) / 1000000f); …我得到了600左右的结果。这个版本,使用并行stream: String[] array = new String[1000000]; Arrays.fill(array, "AbabagalamagA"); Stream<String> stream = Arrays.stream(array).parallel(); long time1 = System.nanoTime(); List<String> list = […]

从PHP运行可执行文件而不会产生shell

我需要从强制的PHP脚本上下文中调用一个可执行文件。 性能和安全性方面,最好不要在Web服务器进程和可执行文件之间调用一个shell。 当然,我在网上search,没有成功(在这样的PHP环境下)。 许多其他语言允许并清楚地logging。 唉,反引号, exec() , shell_exec() , passthru() , system() , proc_open() , popen()调用一个shell。 而pcntl_fork()似乎不可用。 如何testing一个函数是否调用一个shell。 这是在Debian 6 64bit上用PHP 5.3.3-7 + squeeze15testing的。 testing代码在http://pastebin.com/y4C7MeJz 为了得到一个有意义的testing,我使用了一个技巧,就是要求执行一个不能作为可执行文件使用的shell命令。 一个很好的例子是umask 。 任何返回类似0022的函数都被称为shell。 exec() , shell_exec() , passthru() , system() , proc_open()都做了。 请参阅http://pastebin.com/RBcBz02F上的详细结果。 pcntl_fork失败 现在,回到目标:如何执行任意程序而不启动shell? PHP的exec执行预期的数组string参数,而不是一个唯一的string。 但pcntl_fork只是停止请求,甚至没有日志。 编辑:pcntl_fork失败是因为服务器使用Apache的mod_php,请参阅http://www.php.net/manual/en/function.pcntl-fork.php#49949 。 编辑:添加popen()到@hakrebuild议之后的testing。 任何暗示赞赏。

低延迟,大规模的消息队列

在Facebook应用和云计算时代,我正在重新思考大型多人游戏。 假设我要在现有的开放协议的基础上构build一些东西,我想为100万个同时在线的玩家提供服务,只是为了解决这个问题。 假设每个玩家有一个传入的消息队列(对于聊天和什么),平均多一个传入消息队列(公会,区域,实例,拍卖等),所以我们有200万个队列。 一个玩家一次听1-10个队列。 每个队列平均每秒钟可能有1条消息,但某些队列的速率会更高,并且听众数量也会更高(比如说,一个实例的“实体位置”队列)。 我们假设不超过100毫秒的系统排队等待时间,这适用于轻度动作型游戏(但不包括Quake或Unreal Tournament等游戏)。 从其他系统,我知道在单个1U或刀片服务器上为10,000个用户提供服务是一个合理的预期(假设没有任何其他昂贵的事情发生,如物理仿真或其他)。 因此,在客户端连接到连接网关(又连接到消息队列服务器)的交叉开关集群系统中,每个网关有100个网关机器,每个网关有100个队列机器,每个队列服务器有20000个消息队列。 再次,只是为了一般的范围。 每台MQ机器上的连接数量很less:大约100个,可以与每个网关通信。 网关上的连接数量会更多:客户端的连接数量为10,100,连接到所有的队列服务器。 (最重要的是,为游戏世界模拟服务器添加一些连接,或者不pipe怎样,但是我现在试图保持这种分离) 如果我不想从头开始构build,我不得不使用一些存在的消息传递和/或排队基础结构。 我能find的两个开放协议是AMQP和XMPP。 XMPP的预期用途更像是这个游戏系统所需要的,但是开销非常明显(XML,再加上详细的存在数据,以及其他必须build立在其上的其他频道)。 AMQP的实际数据模型更接近于我上面所描述的,但是所有的用户似乎都是大型的企业types的公司,而工作负载似乎是工作stream相关的,而不是实时的游戏更新相关的。 有没有人有任何白天的经验与这些技术,或其实施,你可以分享?