草庐IT

java - 除了动态类型,是什么让 Ruby "more flexible"比 Java 更好?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion我几乎从Java刚问世起就一直在使用它,但在过去的五年里,我已经厌倦了它变得多么复杂,即使是完成最简单的事情。在我的心理医生的推荐下,我开始学习Ruby,呃,我是说我的同事(更年轻、更酷的同事——他们使用Mac!)。无论如何,他们不断重复的一件事是,与Java等更古老、更老旧的语言相比,Ruby是一种“灵活”的语言,但我真的不知道那是什么意思。有人可以解释是什么让一种语言比另一种语言“更灵

ruby-on-rails - Rails Relation#update_all 比 Relation#update 消耗更多的内存

Relation#update(id,attributes)文档提到“无论对象是否成功保存到数据库,都会返回结果对象。”,而Relation#update_all(updates,conditions=nil,options={})表示没有进行任何实例化、回调或验证(直接数据库查询)。运行一个简单的性能测试并将Relation#update替换为Relation#update_all,看起来内存消耗增加了。有什么解释吗?摘录:#BeforeMyModel.update(my_hash['id'],special_attrs)#After(morememoryconsumed)MyMod

ruby - 为什么安装 RDOCS 和 RI 比实际的 gem 花费更长的时间?

安装gem并等待2秒安装gem,然后等待30秒安装文档总是令人沮丧,我从不使用它(谷歌,任何人?)。当本地文档通常甚至没有用时,为什么我们要将此约定强加于自己?我知道您可以使用geminstallrails--no-ri--no-rdoc来跳过这一步,但是有没有一种方法可以默认跳过文档? 最佳答案 将标志添加到您的~/.gemrc文件。来自thedocs:gemlooksforaconfigurationfile.gemrcinyourhomedirectory,althoughyoucanspecifyanotherfileont

c++ - 为什么英特尔的 icc 的 malloc 比 new 慢 7 倍?

我在分配float组时对malloc与new进行了基准测试。我的理解是malloc执行的操作是new执行的操作的子集——malloc只是分配,但new分配和构造,尽管我不确定这对于原语是否有意义。使用gcc的基准测试结果给出了预期的行为。malloc()更快。甚至有一些问题与这个问题相反。使用iccmalloc可以比new慢7倍。怎么可能?!接下来的一切只是基准测试过程的细节。对于基准测试,我使用了最近描述的协议(protocol)byIntel.这是我的结果。使用GNU的gcc分配4000个float的数组时经过的时钟周期:newmemoryallocation,cycles1216

c++ - 为什么英特尔的 icc 的 malloc 比 new 慢 7 倍?

我在分配float组时对malloc与new进行了基准测试。我的理解是malloc执行的操作是new执行的操作的子集——malloc只是分配,但new分配和构造,尽管我不确定这对于原语是否有意义。使用gcc的基准测试结果给出了预期的行为。malloc()更快。甚至有一些问题与这个问题相反。使用iccmalloc可以比new慢7倍。怎么可能?!接下来的一切只是基准测试过程的细节。对于基准测试,我使用了最近描述的协议(protocol)byIntel.这是我的结果。使用GNU的gcc分配4000个float的数组时经过的时钟周期:newmemoryallocation,cycles1216

ruby - 为什么在某些情况下 Ruby 的 Hash#values 比 Hash#each_value 更快?

当我将each_value应用于哈希时,它比我使用values时花费的时间要长得多,即使each_value表面上避免了分配和复制一个数组。我写了一个简单的对比:require'benchmark/ips'some_hash=File.open('with_an.dat'){|f|Marshal.loadf}Benchmark.ipsdo|x|x.report"callingeach_value"dosome_hash.each_valueendx.report"callingvalues"dosome_hash.valuesendx.compare!endBenchmark.ipsd

ruby - 为什么在 Ruby 中使用 String#count 比使用 String#chars 计算字母更快?

使用以下基准:defcreate_genome"gattaca"*100enddefcount_frequency_using_chars(sequence)100000.timesdosequence.chars.group_by{|x|x}.map{|letter,array|[letter,array.count]}endenddefcount_frequency_using_count(sequence)100000.timesdo["a","c","g","t"].map{|letter|sequence.count(letter)}endendsequence=create

ruby - 为什么 Ruby 的循环命令比 while true 慢?

Ruby有一个内置的loop命令,可以永远执行它后面的block(或者直到被break停止)。但是,当将它与功能相似的whiletrue进行比较时,它的速度要慢得多:require"benchmark/ips"NUMBER=100_000_000deffastindex=0whiletruebreakifindex>NUMBERindex+=1endenddefslowindex=0loopdobreakifindex>NUMBERindex+=1endendBenchmark.ipsdo|x|x.report("WhileLoop"){fast}x.report("Kernelloo

ruby-on-rails - 比 each_slice 更平衡的数组操作?

我有一个包含10个项目的数组,我想将它分成3个部分,如下所示:[1,2,3,4][5,6,7][8,9,10]使用each_slice我可以接近:a=*(1..10)a.each_slice(4)#use4soIcanfiteverythinginto3sections[1,2,3,4][5,6,7,8][9,10]但我想要第一种分布更均匀的格式。我可以编写自己的方法来做到这一点。但是在ruby​​1.9+中是否有内置的方法来做到这一点?更新:由于没有内置方法,我想将我的问题更改为-您将如何实现它? 最佳答案 这是我的实现defch

ruby - 为什么 String#split ("\n") 和 Array#join (' ' ) 比 String#gsub(/\n/, ' ' ) 更快?

我必须从大量字符串中删除所有换行符。在对string.join("\n").split('')与string.gsub(/\n/,'')进行基准测试时,我发现拆分和join方法要快得多,但很难理解为什么。我不明白如何在每次遇到\n时将字符串拆分为数组元素,然后将数组加入一个新字符串可能比扫描并替换每个\n更快与''。sentence=%q[Sedutperspiciatisundeomnisistenatuserrorsitvoluptatemaccusantiumdoloremquelaudantium,totamremaperiam,eaqueipsaquaeabilloinven