Is there a performance gain in using single quotes vs double quotes in ruby?

前端 未结 14 671
挽巷
挽巷 2020-11-27 10:32

Do you know if using double quotes instead of single quotes in ruby decreases performance in any meaningful way in ruby 1.8 and 1.9.

so if I type

qu         


        
14条回答
  •  粉色の甜心
    2020-11-27 11:08

    I tried the following:

    def measure(t)
      single_measures = []
      double_measures = []
      double_quoted_string = ""
      single_quoted_string = ''
      single_quoted = 0
      double_quoted = 0
    
      t.times do |i|
        t1 = Time.now
        single_quoted_string << 'a'
        t1 = Time.now - t1
        single_measures << t1
    
        t2 = Time.now
        double_quoted_string << "a"
        t2 = Time.now - t2
        double_measures << t2
    
        if t1 > t2 
          single_quoted += 1
        else
          double_quoted += 1
        end
      end
      puts "Single quoted did took longer in #{((single_quoted.to_f/t.to_f) * 100).round(2)} percent of the cases"
      puts "Double quoted did took longer in #{((double_quoted.to_f/t.to_f) * 100).round(2)} percent of the cases"
    
      single_measures_avg = single_measures.inject{ |sum, el| sum + el }.to_f / t
      double_measures_avg = double_measures.inject{ |sum, el| sum + el }.to_f / t
      puts "Single did took an average of #{single_measures_avg} seconds"
      puts "Double did took an average of #{double_measures_avg} seconds"
        puts "\n"
    end
    both = 10.times do |i|
      measure(1000000)
    end
    

    And these are the outputs:

    1.

    Single quoted did took longer in 32.33 percent of the cases
    Double quoted did took longer in 67.67 percent of the cases
    Single did took an average of 5.032084099982639e-07 seconds
    Double did took an average of 5.171539549983464e-07 seconds
    

    2.

    Single quoted did took longer in 26.9 percent of the cases
    Double quoted did took longer in 73.1 percent of the cases
    Single did took an average of 4.998066229983696e-07 seconds
    Double did took an average of 5.223457359986066e-07 seconds
    

    3.

    Single quoted did took longer in 26.44 percent of the cases
    Double quoted did took longer in 73.56 percent of the cases
    Single did took an average of 4.97640888998877e-07 seconds
    Double did took an average of 5.132918459987151e-07 seconds
    

    4.

    Single quoted did took longer in 26.57 percent of the cases
    Double quoted did took longer in 73.43 percent of the cases
    Single did took an average of 5.017136069985988e-07 seconds
    Double did took an average of 5.004514459988143e-07 seconds
    

    5.

    Single quoted did took longer in 26.03 percent of the cases
    Double quoted did took longer in 73.97 percent of the cases
    Single did took an average of 5.059069689983285e-07 seconds
    Double did took an average of 5.028807639983705e-07 seconds
    

    6.

    Single quoted did took longer in 25.78 percent of the cases
    Double quoted did took longer in 74.22 percent of the cases
    Single did took an average of 5.107472039991399e-07 seconds
    Double did took an average of 5.216212339990241e-07 seconds
    

    7.

    Single quoted did took longer in 26.48 percent of the cases
    Double quoted did took longer in 73.52 percent of the cases
    Single did took an average of 5.082368429989468e-07 seconds
    Double did took an average of 5.076817109989933e-07 seconds
    

    8.

    Single quoted did took longer in 25.97 percent of the cases
    Double quoted did took longer in 74.03 percent of the cases
    Single did took an average of 5.077162969990005e-07 seconds
    Double did took an average of 5.108381859991112e-07 seconds
    

    9.

    Single quoted did took longer in 26.28 percent of the cases
    Double quoted did took longer in 73.72 percent of the cases
    Single did took an average of 5.148080479983138e-07 seconds
    Double did took an average of 5.165793929982176e-07 seconds
    

    10.

    Single quoted did took longer in 25.03 percent of the cases
    Double quoted did took longer in 74.97 percent of the cases
    Single did took an average of 5.227828659989748e-07 seconds
    Double did took an average of 5.218296609988378e-07 seconds
    

    If I made no mistake, it seems to me that both take approximately the same time, even though single quoted is slightly faster in most cases.

提交回复
热议问题