我的应用程序运行缓慢是因为 mysql 的 execute() 函数。我制作了一个简单的 sql 查询来说明这个问题:
SELECT * FROM `cid444_agg_big` c WHERE 1
.
>>> import MySQLdb as mdb
>>> import time;
>>>
>>> dbconn = mdb.connect('localhost','*****','*****','*****');
>>> cursorconn = dbconn.cursor()
>>>
>>> sql="SELECT * FROM `cid444_agg_big` c WHERE 1";
>>>
>>> startstart=time.time();
>>> cursorconn.execute(sql);
21600L #returned 21600 records
>>> print time.time()-startstart, "for execute()"
2.86254501343 for execute() #why does this take so long?
>>>
>>> startstart=time.time();
>>> rows = cursorconn.fetchall()
>>> print time.time()-startstart, "for fetchall()"
0.0021288394928 for fetchall() #this is very fast, no problem with fetchall()
在 mysql shell 中运行此查询,产生 0.27 秒,或快 10 倍!!!
我唯一的想法是返回数据的大小。这将返回 21600 个“宽”行。所以有很多数据被发送到 python。数据库是本地主机,因此没有网络延迟。
为什么这需要这么长时间?
更新更多信息
我用 php 写了一个类似的脚本:
$c = mysql_connect ( 'localhost', '*****', '****', true );
mysql_select_db ( 'cachedata', $c );
$time_start = microtime_float();
$sql="SELECT * FROM `cid444_agg_big` c WHERE 1";
$q=mysql_query($sql);$c=0;
while($r=mysql_fetch_array($q))
$c++;//do something?
echo "Did ".$c." loops in ".(microtime_float() - $time_start)." seconds\n";
function microtime_float(){//function taken from php.net
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
这打印:
Did 21600 loops in 0.56120800971985 seconds
这会循环处理所有数据,而不是一次检索所有数据。 PHP 似乎比 Python 版本快 6 倍....
最佳答案
The default MySQLdb cursor在执行时将完整的结果集提取到客户端,fetchall() 只会将数据从内存复制到内存。
如果你想将结果集存储在服务器上并按需获取,你应该使用SSCursor相反。
Cursor:
This is the standard Cursor class that returns rows as tuples and stores the result set in the client.SSCursor:
This is a Cursor class that returns rows as tuples and stores the result set in the server.
关于python mysql execute() 很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14224729/
有人知道为什么我的rails3.0.7cli这么慢吗?当我运行railss或railsg时,他大约需要5秒才能真正执行命令...有什么建议吗?谢谢 最佳答案 更新:我正在将我的建议从rrails切换到rails-sh,因为前者支持REPL,而rrails不是用例。此外,当与ruby环境结合使用时,修补似乎确实可以提高性能变量,现在反射(reflect)在答案中。一个可能的原因可能是这个performancebuginruby每当在ruby代码中使用“require”时,它就会调用一些代码(更多详细信息here)。在使用Rai
我有这段代码:date_counter=Time.mktime(2011,01,01,00,00,00,"+05:00")@weeks=Array.new(date_counter..Time.now).step(1.week)do|week|logger.debug"WEEK:"+week.inspect@weeks从技术上讲,代码有效,输出:SatJan0100:00:00-05002011SatJan0800:00:00-05002011SatJan1500:00:00-05002011etc.但是执行时间完全是垃圾!每周计算大约需要四秒钟。我在这段代码中是否遗漏了一些奇怪的低效
最近,当我运行vim来编辑ruby文件或rails项目时,它需要很长时间才能启动。但是在纯文本文件上调用时它启动速度很快。有什么方法可以找出哪些rubyvim插件最能延长启动时间? 最佳答案 如果您使用的是7.2.286或更新版本,您可以运行vim--startuptimevim.outfoo.rb记录启动过程的各个部分需要多长时间。 关于ruby-ruby插件会使启动vim很慢吗?,我们在StackOverflow上找到一个类似的问题: https:
关于Rails在开发模式下运行缓慢的类似帖子也有,但这些帖子中的解决方案都没有对我产生任何影响。我试过安装可以提高性能的gem并修改配置文件,但都没有成功。我刚开始使用Rails,所以我正在运行“Rails入门”指南中的启动应用程序,这是一个小博客。我已经按照推荐安装了Ruby1.9.3和Rails3.2.13。我在OS/X10.7.5上运行。当加载教程应用的起始页时,实际上只有1行文本和1个链接,需要20-40秒。对任何页面的每个后续请求都需要20-40秒。然而,当我查看服务器日志时,Rails所做的任何事情似乎都不会花费很长时间。日志中的事件之间的时间一直在占用。作为Rails的初
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭7年前。Improvethisquestion我喜欢RubyonRails,我将它用于我所有的Web开发项目。几年前,有很多人在谈论Rails是一个内存大户,以及它如何不能很好地扩展,但这些建议被GreggPollackhere搁置了。.不过最近,我听到有人说Ruby本身很慢。为什么Ruby被认为很慢?我不觉得Ruby很慢,但话又说回来,我只是用它来制作简单的CRUD应用程序和公司博客。在我发现Ruby变慢之前,我需要做什么样的项目?还是这种缓慢只是
我有一个函数平均需要250毫秒才能完成。我想在更短的时间内完成此操作,functionupdateDisplay(){varstart=newDate().getTime();var$this=$(this);vardata=$this.data('ansi');varhtml='';for(vari=0;i';}varcreate=newDate().getTime();console.log('Buildhtml:'+(create-start));$this.html(html);varend=newDate().getTime();console.log('Updatehtml
我正在测试将html元素动态添加到DOM的不同方法的速度。我构建了一个测试器here(代码是工作版本,非常草率)。对于不同的浏览器,结果(非常)不同,Chrome在速度方面获得了所有分数,而Opera位居第二-但这不是这里的问题。在Firefox中,我检测到清除div(从它的子节点)时出现问题。添加大约50.000个div元素时,需要很长时间才能清除,仅使用[div].innerHTML="";这是怎么回事?Firefox是否为此实现了一些内在的垃圾收集方法? 最佳答案 虽然我不确定innerHTML="",但您遗漏了一个可能使用D
我刚刚在我的Windows10机器上下载了VS152015Community,并安装了所有默认包。无论出于何种原因,如果我尝试打开一个javascript文件或几乎任何其他扩展,加载它大约需要15-20秒。这段代码在文本中只说了单词test。现在无论出于何种原因,如果我决定右键单击javascript文件并选择打开方式>“MicrosoftVisualStudio版本选择器”它不是使用普通的MicrosoftVisualStudio2015,而是立即打开,最多只需2-3秒...这是怎么回事?这太烦人了!我已经重新安装VS3次,清除了所有旧的垃圾文件,甚至尝试在没有安装单个工具或扩展的情
我在几个地方读到for-in循环比遍历数组慢...虽然我知道与在场景后面发生的任何迭代相比,在sizeof(type)block中向前移动实际上是毫不费力的一个对象的键,我还是很好奇,究竟是什么原因这么慢...是否必须执行反向散列函数才能获取key,这个过程很慢? 最佳答案 在任何特定引擎的情况下,真正的答案可能取决于该引擎的实现。(差异的大小,如果有的话。)但是,有不变量。例如,考虑:varobj={a:"alpha",b:"beta"};varname;for(nameinobj){console.log(obj[name]);
我需要使我的网站在客户端更快。我想知道我过多的Javascriptcookie操作是否会降低浏览器的速度。它使用硬盘驱动器,这是计算机中最慢的组件。在严重碎片化的硬盘驱动器上,cookie操作会卡住浏览器吗?JS是否对cookie写入/读取(缓存等)进行了任何优化。我可以利用这些优化来改进我的网站吗?用服务器端数据库替换客户端cookie是不可能的,因为我的服务器已经重载了。 最佳答案 有几种方法可以加快客户端页面的速度,但我猜测减少cookie的使用最多只能节省几微秒。总的来说,请确保您只保存所需的内容。您还可以进行大量其他优化,