在我的公司,我們最近一直在努力修改該使用下面的邏輯來執行一些數據庫字段分配現有的程序:進展4GL性能提升,避免數據庫寫操作
db-buffer1.field1 = if db-buffer1.field1 <> db-buffer2.field2
then db-buffer2.field2
else db-buffer1.field1
我這裏不是100%的原程序員的意圖。任何人都可以幫助我瞭解在決定是否分配新字段之前比較字段值是否不同的價值?
如果比較結果爲「假」,我們最終分配db-buffer1.field1 = db-buffer1.field1
我們避免數據庫上的寫操作?
另外請注意,這個例子是一個包含運行類似的分配/比較邏輯的幾個字段較大ASSIGN
語句的一部分。這對這個附加代碼的價值有什麼影響嗎? (即,爲了避免數據庫寫入,是否必須成功執行ASSIGN
語句中的所有比較)
指出,「在這種歸結爲字段1 =字段1你可能希望一些下層將優化寫出存在的情況下」 - 這幾乎是什麼我不知道。我們正在運行10.05B.32。除非Progress正在優化寫入 - 我沒有看到任何理由讓代碼與額外的IF/THEN邏輯進行卷積,因爲最終字段1將具有相同的值,無論如何。 – pmartin
...即使Progress確實優化了較低層的寫操作,我們實際上只是用一個比較操作來替換寫操作。當然,比較速度更快,但我不相信性能增益如此重要,以至於它可以保證代碼對於未來的維護程序員來說可讀性和可讀性要低得多。 – pmartin
我同意。這很愚蠢,幾乎沒有意義,一點也不清楚。 –