Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在方法末尾返回nil或boolean是否比让Ruby返回最后一行代码的结果更有效?_Ruby On Rails_Ruby_Memory Management_Garbage Collection_Jruby - Fatal编程技术网

Ruby on rails 在方法末尾返回nil或boolean是否比让Ruby返回最后一行代码的结果更有效?

Ruby on rails 在方法末尾返回nil或boolean是否比让Ruby返回最后一行代码的结果更有效?,ruby-on-rails,ruby,memory-management,garbage-collection,jruby,Ruby On Rails,Ruby,Memory Management,Garbage Collection,Jruby,在Ruby中,我们都知道,方法的最后一行是该方法的“返回”值 假设您有一个构建重对象的过程(aka,我们只希望它工作而不关心返回值的方法),或者它的最后一行是Rails logger语句或其他一些类实例 如果在最后一行添加一个“nil”或“boolean”,而不是在不使用返回值的情况下返回那个沉重的对象,那么性能会更高(或者消耗更少的资源) def test_method some_big_object end vs 在我看来,就纯对象分配而言,内存性能更好。仅仅因为该方法“返回”一个

在Ruby中,我们都知道,方法的最后一行是该方法的“返回”值

假设您有一个构建重对象的过程(aka,我们只希望它工作而不关心返回值的方法),或者它的最后一行是Rails logger语句或其他一些类实例

如果在最后一行添加一个“nil”或“boolean”,而不是在不使用返回值的情况下返回那个沉重的对象,那么性能会更高(或者消耗更少的资源)

def test_method
    some_big_object
end
vs

在我看来,就纯对象分配而言,内存性能更好。仅仅因为该方法“返回”一个未使用的大对象,并不意味着它需要任何进一步的处理或导致任何额外的内存膨胀

第二个选项看起来更糟,因为它现在创建了一个额外的对象

我觉得增加额外的返回线,特别是如果返回线不是nil,是多余和浪费的。当然Ruby的,甚至JRUBY的,垃圾收集比这更聪明


我确实意识到,返回nil可能会有一些好处,可以防止其他开发人员尝试使用此方法来返回仅用于工作的值。但单纯地说性能,我说的对吗?

任何方法都会返回一个对象,或者更具体地说:一个对象id,它只是一个数字。零,假,一些大对象:都只是一个数字。不用麻烦了

我期待有一天我的应用程序达到这样的性能优化水平!如果这是一种公共方法,我会更加担心依赖意外返回值的人,而不是担心创建或不创建
nil
对象的性能损失或收益,以至于性能问题无关紧要。这一点很好。故意返回
nil
允许您在某一天想出正确的返回值,这样您就可以升级该方法并返回它,而不用担心会破坏任何客户端。您已接近回答问题,但尚未完成回答。@sawa您的意思是什么?遗漏了什么?标题中的问题是“在方法末尾返回nil或布尔值是否比让Ruby返回最后一行代码的结果更有效?”你给出了答案的线索,但没有回答。根据他的说法,答案似乎是“他们在基本水平上都表现出色。它们都只是返回对象的ID“
def test_method
    some_big_object
    nil # or true/false
end