我正在使用Dir.glob访问与通配符模式匹配的所有文件的集合。Dir.glob('**/*.txt'){|file_name|parsefile_name}因为这个glob调用是递归的,并且因为涉及很多文件,所以glob在block开始之前需要很长时间来构建文件数组。我想要的是一种访问所有相同文件的方法,但在Ruby“发现”每个文件后立即调用block,以便立即处理第一个文件,而不是等待整个目录树完成搜索。有这样的构造吗? 最佳答案 您还可以使用find和IO.popenIO.popen("find.-name'*.txt'").
什么在以后调用时更快:deffirst_method?()second_method?()end或alias_method:firstmethod,:second_method如果可能的话,为什么?(注意:我不问什么更好/更好等等->这里只有原始速度以及为什么它更快很有趣) 最佳答案 至少在Ruby1.8.6中,别名似乎更快:#!/usr/local/bin/rubyrequire'benchmark'$global_bool=trueclassObjectdeffirst_method?$global_boolenddefseco
我有一个存储在数组中的大约30万个常用词的列表。因此,数组的1个元素=1个单词。另一方面,我有一个巨大的字符串列表,其中可能包含这30万个单词中的一个或多个。示例字符串为:ifdxawesome453。现在,我需要根据常用词检查这些长字符串中的每一个。如果在该字符串中找到一个单词,则立即返回。因此,我需要再次检查这30万个单词ifdxawesome453并查看其中是否包含任何单词。所以我做的是:huge_list_of_words.any?do|word|random_long_word.include?(word)end虽然这对于随机长单词的小样本来说没问题,但如果我有数百万个单词,
直觉上,后者应该比前者快。然而,当我看到基准测试结果时,我感到非常惊讶:require'benchmark/ips'b=(0..20).to_a;y=21;Benchmark.ipsdo|x|x.report('结果是:Calculating-------------------------------------然而,当我的一位同事独立创建了自己的基准时,结果却恰恰相反:Benchmark.ipsdo|x|x.report('push'){@a=(0..20).to_a;@a.push(21)}x.report('结果:Calculating---------------------
Thisanswer在另一个问题上说array.map(&:to_s)比快array.map{|n|n.to_s}在第一个例子中,&把:to_s变成一个Proc。第二个例子使用了一个block。为什么Proc在该基准测试中可能比block快?这种技术是否允许解释器进行一些优化? 最佳答案 这并不是关于“procvsblock”。下面是一个简单的实验(随意复制运行):require'benchmark'many=500array=(1..10000).to_aproc=proc{|a|a.to_s}Benchmark.bmdo|x|x
在时间紧迫的脚本中,我们有几个地方可以将旧ID转换为字符串。目前,我们在函数内部使用case语句,如下所示:defget_nameidcaseidwhen1"onething"when3"otherthing"else"defaultthing"endend我正在考虑将其替换为哈希查找,如下所示:NAMES={1=>"onething",3=>"otherthing",}NAMES.default="defaultthing"感觉使用NAMES[id]应该比使用get_name(id)更快-但真的是这样吗? 最佳答案 首先,有几点。
我正在运行mysql、database_cleaner、Rspec等。到目前为止我有大约518个测试,它们需要88秒才能运行。这对我来说是NotAcceptable,因为我的应用程序开发才刚刚开始。因此,在进一步深入之前,我想尝试找到减少运行这些测试所需时间的方法-希望不必实际更改测试。在大多数情况下,我尝试使用stub。但是,当我测试模型和查询时,我会使用数据库。我认为database_cleaner正在减慢它们的速度,但我不知道如何在没有它的情况下测试查询和其他内容。使用带有“:memory:”选项的sqlite3似乎只减少了大约10秒(有点令人失望的结果......)我该怎么做才
如果我使用RubyonRails,我应该安装MRI/YARVRuby还是JRuby?哪个更快? 最佳答案 最近的基准测试将JRuby置于领先地位,其次是MagLev、Rubinius,然后是MRI。基准测试很棘手。RubyBenchmarkSuite最常用于对Ruby进行基准测试。如果您删除任何实现失败的基准测试,您将得到下图。请注意,我使用的是几何平均数。这是一个更好的平均性能指标,因为它规范了异常值和机器规范。您可以运行的最佳基准将特定于您的应用。如果您正在寻找整体性能,您可能希望使用真正的线程,因此Rubinius或JRuby
我有一个正在运行的Rails3.2.1应用程序,我正在通过Capistrano使用deploy/assets进行部署,它运行deploy:assets:precompile任务。一切正常,除了编译本身真的很慢。我没有那么多CSS和JavaScript(总共大约8200行)。编译Assets一般需要1-3分钟左右,占整个部署时间的90%左右。有什么办法可以优化吗?也许使用不同的程序来编译Assets或以某种方式优化它?我在Linode5121.9.2-p290、Rails3.2.1上运行该应用程序,如果有任何相关性,我会使用therubyracergem。 最
我有大约300万张图像,需要为每个图像计算直方图。现在,我正在使用Python,但是花了很多时间。有什么方法可以分批处理图像?我有NVIDIA1080TIGPU卡,所以也许如果有一种方法可以在GPU上进行处理?我找不到任何代码或库来并行处理图像。感谢任何帮助提高速度的帮助看答案Python是您可以使用的最慢的生产就绪语言之一。由于您没有发布任何代码,因此我只能提供一般建议。它们按照以下方式按实用顺序列出:使用python的编译版本,例如pypy或cpython将现有软件与所需功能一起使用。在线找到免费软件没有错。使用更高效的(甚至有损失)算法来跳过计算使用更快的语言,例如Rust,C++,C#