我目前正在重構遺傳編程系統的一些C++。在當前的代碼中,我有一個全局可用的隨機數生成器對象。它的設置如下全局對象是否比幾個本地實例提供更好的性能?
RNG.h
RNG.cpp -> Instance created here
Globals.h -> includes 'RNG.h'
-> extern RNG rng;
OtherClasses -> include 'Globals.h'
RNG實例爲每個可用線程設置一個生成器向量。我花了很多時間來做這件事。這個全局設置很方便,但是每個翻譯單元的實例可能會更快?圍繞這種需求是否有最佳做法?
它經常說可能會刪除全局變量,但它似乎很適合在這裏。
'但是這可能是每個翻譯單元的實例更快的'據我所知,你不能兩次定義一個變量;?鏈接器肯定會對你大喊 – Paranaix
啊 - 是的,我的意思是創建RNG作爲使用它的類中的成員。 – joeButler
全局變量和本地變量之間沒有性能差異(除非執行特定的寄存器分配),因爲代碼總是在代碼段中。但全局變量是一種可怕的做法,因爲它們呈現代碼線程不安全,傾向於錯誤和無法維護 –