Ruby 延遲計算與優化

2022-07-12 08:51:09 字數 1138 閱讀 4294

ruby 的延遲計算大家已經用得很多了, 下面就是乙個範例

def current_user

@current_user ||= user.where(:id => session[:user_id]).first

endend def foo

current_user

current_user

endend但這個範例有乙個問題, 如果 current_user 不存在, 那麼每次呼叫 current_user 時都會額外查詢一次資料庫, 優化的方式就是用 instance_variable_defined? 先查詢一下變數是否已經被定義, 測試範例如下

class a

def foo

puts " expensive computing"

nilend

def failed_lazy

@foo ||= foo

enddef successful_lazy

return @bar if instance_variable_defined? "@bar"

@bar = foo

enddef test

puts "use failed lazy computing"

(1..10).each

puts "use successful lazy computing"

(1..10).each

endenda.new.test

測試結果如下

use failed lazy computing

expensive computing

expensive computing

expensive computing

expensive computing

expensive computing

expensive computing

expensive computing

expensive computing

expensive computing

expensive computing

use successful lazy computing

expensive computing

實時優化 鏈路延遲計算

如何為自動駕駛程式計算鏈路延遲?換種思路,其實可以大問題分解成小問題 通過各部分task io的執 況,來證明某個鏈路的延遲.stop鏈路如下,從決策一直到底盤 decider planning control guardian chassis這裡的程式邏輯如下 time based,100hz 表...

VR延遲優化

vr中的 延遲 特指 motion to photon latency 指的是從使用者運動開始到相應畫面顯示到螢幕上所花的時間.這中間經過了大概這麼幾個步驟 感測器採集運動輸入資料 採集到的資料進行過濾並通過線纜傳輸到主機 遊戲引擎根據獲取的輸入資料更新邏輯和渲染視口 提交到驅動並由驅動傳送到顯示卡...

hihoCoder 優化延遲

小ho編寫了乙個處理資料報的程式。程式的輸入是乙個包含n個資料報的序列。每個資料報根據其重要程度不同,具有不同的 延遲懲罰值 序列中的第i個資料報的 延遲懲罰值 是pi。如果n個資料報按照的順序被處理,那麼總延遲懲罰 sp 1 pi1 2 pi2 3 pi3 n pin 其中i1,i2,in是1,2...