mysql - rails - 数字比较比文本比较快多少

标签 mysql sql ruby-on-rails ruby ruby-on-rails-3

我的模型中有一个非常昂贵的方法,用于比较数组的文本项中的许多项。

它运行真的很慢。如果我使用关系数据库表并只比较 ID,我的方法会运行得更快吗?

/编辑

我正在尝试对以下内容进行基准测试:

 @matches = @location_matches.sort do |l1, l2|
      l1.compute_score(current_user) <=> l2.compute_score(current_user)
    end

    @matches.reverse!

最佳答案

简而言之,我猜数字比较会更快,因为比较字符串是一个接一个地比较字符(建议:在 Ruby 中尽可能使用符号,它们的比较要快得多)。

无论如何,你会发现there ,您需要进行基准测试并获得详细结果的一切。

代码示例:

require 'benchmark'

n = 50000
Benchmark.bm do |x|
  x.report("for:")   { for i in 1..n; a = "1"; end }
  x.report("times:") { n.times do   ; a = "1"; end }
  x.report("upto:")  { 1.upto(n) do ; a = "1"; end }
end

结果:

                user     system      total        real
   for:     1.050000   0.000000   1.050000 (  0.503462)
   times:   1.533333   0.016667   1.550000 (  0.735473)
   upto:    1.500000   0.016667   1.516667 (  0.711239)

关于mysql - rails - 数字比较比文本比较快多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6849999/

相关文章:

ruby-on-rails - 如何在 ActiveScaffold 中覆盖表单标题或标题

具有增量值的 MySQL 更新行

mySql 为每个用户选择最后一个条目

php - PHP 中准备好的 SQL 语句不更新 MySQL 数据库行

php - 阻止 php 中重复的用户名

ruby-on-rails - 我什么时候/为什么要在方法上引发异常?

php - where 子句中的 SQL 语法错误

mysql - MySQL 中的日期样式

php - 如何清除SQL中的自增列并插入一组从1开始的新数字?

ruby-on-rails - 基于 where 谓词从 Rails API 中删除的 Curl 命令?