我從python生成自動C++代碼,特別是我需要選擇一些事件列表的事件。我宣佈一些選擇:智能自動C代碼生成器嵌套如果在Python中
selectionA = Selection(name="selectionA", formula="A>10")
selectionB = Selection(name="selectionB", formula="cobject->f()>50")
selectionC = selectionA * selectionB # * means AND
這個生成的C++代碼:
for(...) { // cicle on events
event = GetEvent(i);
bool selectionA = A>10;
bool selectionB = cobject->f()>50;
bool selectionC = (A>10) and (cobject->f()>50);
if (selectionA) { histo_selectionA->Fill(event); }
if (selectionB) { histo_selectionB->Fill(event); }
if (selectionC) { histo_selectionC->Fill(event); }
}
這是不是很聰明,因爲聰明的代碼將是:
bool selectionC = selectionA and selectionB
這個問題似乎是很簡單,但事實並非如此,因爲我有100多個基地選擇(如selectionA
或selectionB
)和300多個衍生選擇,當然派生的選擇可以從派生的選擇ction。顯而易見的派生選擇不是使用常規模式從基本選擇派生的。
我明白,這是很難回答,但有人可以給我一些提示?例如:編寫智能代碼真的有必要嗎?我的意思是,編譯器無法優化此代碼?
我相信大多數C++編譯器已經爲你做了這個。 – 2010-08-29 14:56:22
爲什麼你在變量中只有第一代擴展到公式的標誌,然後纔是布爾條件的名稱? – blwy10 2010-08-29 15:06:24
@ blwy10:因爲它不那麼容易,特別是你必須保證按照正確的順序聲明bool變量並且不需要重複。 – 2010-08-29 15:13:46