我对MongoDb非常兴奋,最近一直在testing它。 我在MySQL中有一个名为posts的表,其中只有一个名为'id'的字段索引了大约2000万条logging。 我想比较MongoDB的速度,我运行了一个testing,从我们庞大的数据库中随机获取并打印15条logging。 我为mysql和MongoDB运行了大约1000次的查询,我感到惊讶,我没有注意到速度有很大的不同。 也许MongoDB速度是1.1倍。 这非常令人失望。 有什么我做错了吗? 我知道我的testing并不完美,但是当涉及到阅读密集的杂事时,MySQL与MongoDb是一致的。 注意: 我有双核+(2线程)I7 CPU和4GB RAM 我在MySQL上有20个分区,每个分区有100万条logging 用于testingMongoDB的示例代码 <?php function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } $time_taken = 0; $tries = 100; // connect $time_start = microtime_float(); for($i=1;$i<=$tries;$i++) { $m = new Mongo(); $db = $m->swalif; $cursor = $db->posts->find(array('id' => array('$in' => […]
在你回答这个问题之前,我从来没有开发过任何stream行的东西来达到高服务器负荷 把我当成(叹气)刚刚降落在地球上的外星人,虽然知道PHP和一些优化技术。 我正在开发一个PHP工具,可以达到相当多的用户,如果工作正确的话。 然而,尽pipe我完全有能力开发这个程序,但在处理巨大stream量的时候,我却一无所知。 所以这里有几个问题(可以随意将这个问题转化为资源线程)。 数据库 目前我打算使用PHP5中的MySQLifunction。 但是,我应该如何设置与用户和内容有关的数据库? 我真的需要多个数据库吗? 目前所有的东西都混杂在一个数据库中 – 尽pipe我一直在考虑把用户数据分散到另一个数据库,实际内容到另一个数据库,最后是核心站点内容(模板主人等)到另一个数据库。 我的理由是,发送查询到不同的数据库将缓解作为一个数据库= 3加载源的负载。 如果他们都在同一台服务器上,这还会有效吗? 高速caching 我有一个模板系统,用于构build页面和换出variables。 主模板存储在数据库中,每次调用一个模板时,都会调用它的caching副本(一个html文档)。 目前,我在这些模板中有两种types的variables – 静态variables和dynamicvariables。 静态variables通常是页面名称,网站名称 – 不经常变化的东西; dynamicvariables是每个页面负载变化的东西。 我的问题是: 说我对不同的文章有评论。 这是一个更好的解决scheme:每次加载页面时存储简单的评论模板并呈现评论(从数据库调用),或者将评论页面的caching副本存储为html页面 – 每次添加/编辑评论该页面被recached。 最后 有没有人有任何提示/指针在PHP上运行一个高负载的网站。 我很确定这是一个可行的语言使用 – Facebook和雅虎! 给它很大的优先权 – 但是有没有我应该注意的经验?
我试图在我的开发数据库上执行一些脱机维护(从活动备份开始数据库恢复),但是通过SQL Server Management Studio执行的“脱机”命令的执行速度非常慢,大约在30分钟以上。 我只是在我的智慧结束,我似乎无法find任何网上提到什么可能会导致速度问题,或如何解决它。 一些网站build议开放连接到数据库导致这种放缓,但使用这个数据库的唯一应用程序是我的开发机器的IIS实例,服务停止 – 没有更多的开放连接。 有什么可能导致这种放缓,我能做些什么来加速呢?
在Java中,当实际上没有错误时使用throw / catch作为逻辑的一部分通常是一个坏主意(部分),因为抛出和捕获exception是很昂贵的,而且在循环中多次执行通常比其他控制结构不涉及抛出exception。 我的问题是,在throw / catch本身,或创buildException对象(因为它获得了包括执行堆栈的许多运行时信息)的成本? 换句话说,如果我这样做 Exception e = new Exception(); 但是不要扔它,是抛出的大部分费用,还是抛出+ catch处理什么是昂贵的? 我不问是否将代码放在try / catch块中,是否会增加执行代码的代价,我想知道捕获Exception是否是昂贵的部分,或者创build(调用构造函数)Exception是昂贵的部分。 另一个问这个问题的方法是,如果我做了Exception的一个实例,并且一遍又一遍地抛出并捕获它,那么每次抛出这个exception会比创build一个新的exception快得多吗?
大家都知道如何在HTML中设置一个favicon.ico链接: <link rel="shortcut icon" href="http://hi.org/icon.ico" type="image/x-icon" /> 但是我认为,对于一个很小的几个字节的图标来说,你还需要另一个HTTP请求 。 所以我想知道,为了加快和保存这个有价值的HTTP请求,我怎么能让这个图像成为精灵(例如background-position = 0px-200px;)的一部分:我如何解决这个问题并将其融入我的其余部分现有的图像精灵与我的标志和我的其他艺术品? 指向favicon.ico的机器人,瀑布图上的item.31,是我的宠物ZAM,他经常更快乐,他有一个好点让我知道它的时间在networking上的一些创意升级,虽然他和我不'不同意他的服装,我觉得今天有点傻…
我试图找出一个表是否存在一行。 使用MySQL,最好是做这样的查询: SELECT COUNT(*) AS total FROM table1 WHERE … 并检查总数是否非零或是否更好地执行这样的查询: SELECT * FROM table1 WHERE … LIMIT 1 并检查是否有行被返回? 在这两个查询中,WHERE子句使用一个索引。
我正在研究一些需要高度优化的Java代码,因为它将在我的主程序逻辑中的许多地方被调用的热门函数中运行。 该代码的一部分涉及将doublevariables乘以10得到任意的非负int exponent s。 一个快速的方法(编辑:但不是最快的,见下面的更新2)获得乘数的值是switch exponent : double multiplyByPowerOfTen(final double d, final int exponent) { switch (exponent) { case 0: return d; case 1: return d*10; case 2: return d*100; // … same pattern case 9: return d*1000000000; case 10: return d*10000000000L; // … same pattern with long literals case 18: return d*1000000000000000000L; default: throw […]
是一个 select * from myView 比查询本身创build视图更快(为了有相同的结果集): select * from ([query to create same resultSet as myView]) ? 对于我来说,如果视图使用某种caching,与简单的查询相比更快,这并不是完全清楚。
>>> timeit.timeit("'x' in ('x',)") 0.04869917374131205 >>> timeit.timeit("'x' == 'x'") 0.06144205736110564 也适用于具有多个元素的元组,这两个版本似乎都是线性增长的: >>> timeit.timeit("'x' in ('x', 'y')") 0.04866674801541748 >>> timeit.timeit("'x' == 'x' or 'x' == 'y'") 0.06565782838087131 >>> timeit.timeit("'x' in ('y', 'x')") 0.08975995576448526 >>> timeit.timeit("'x' == 'y' or 'x' == 'y'") 0.12992391047427532 基于此,我认为我应该完全开始in各地使用in而不是== !
有没有任何Ruby / Pythonfunction阻止优化的实现(例如内联caching )V8引擎? Python由Google合作开发,所以不应该被软件专利所阻挡。 或者这是Google投入V8项目的资源问题。