小编sha*_*_ru的帖子

为什么==比eql更快?

我在文档中读取了String类,它eql?是一个严格的相等运算符,没有类型转换,并且==是一个等于运算符,它尝试将其参数的第二个转换为String,并且此方法的C源代码确认:

eql?源代码如下:

static VALUE
rb_str_eql(VALUE str1, VALUE str2)
{
    if (str1 == str2) return Qtrue;
    if (TYPE(str2) != T_STRING) return Qfalse;
    return str_eql(str1, str2);
}
Run Code Online (Sandbox Code Playgroud)

==源代码如下:

VALUE
rb_str_equal(VALUE str1, VALUE str2)
{
    if (str1 == str2) return Qtrue;
    if (TYPE(str2) != T_STRING) {
        if (!rb_respond_to(str2, rb_intern("to_str"))) {
            return Qfalse;
        }
        return rb_equal(str2, str1);
    }
    return str_eql(str1, str2);
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试对这些方法进行基准测试时,我感到惊讶的==是,速度比eql?高达20%快!我的基准代码是:

require "benchmark"

RUN_COUNT = 100000000
first_string = "Woooooha"
second_string …
Run Code Online (Sandbox Code Playgroud)

ruby string benchmarking equality

17
推荐指数
1
解决办法
975
查看次数

函数参数中的jquery当前元素

我正在使用jquery-imagetool插件来裁剪图像.我的jquery代码如下:

$('div.image img').imagetool({
    viewportWidth: 171,
    viewportHeight: 267
})
Run Code Online (Sandbox Code Playgroud)

我想从div.image元素的css获取viewportWidth参数,所以我需要获取当前元素(img)并调用parent().

谁能帮我?

jquery

1
推荐指数
1
解决办法
251
查看次数

如何在Ruby中使用不同的object_id初始化对象?

如果我初始化具有赋值的对象 a = b = c = []

那么这个变量有相同的object_ids: a.object_id == b.object_id == c.object_id

我也尝试过:

[a, b, c].map {|e| e = [] }

a, b, c = Array.new(3, [])

a, b, c = Array.new(3, Array.new)
Run Code Online (Sandbox Code Playgroud)

但它不会使用不同的 object_id 初始化a,b,c变量

有没有办法用不同的对象id初始化变量a,b,c但具有相同的值== []?

ruby initialization

0
推荐指数
1
解决办法
124
查看次数

标签 统计

ruby ×2

benchmarking ×1

equality ×1

initialization ×1

jquery ×1

string ×1