编辑:似乎已经消失了。
我已经对代码的某些部分进行了基准测试,发现 如果是这样的话:
if(oneCondition)
{
performOne();
performOne_two();
abc();
def();
gh();
} else
{
performTwo();
performTwo_two();
abc();
def();
gh();
}
它的运行速度明显快于这样的速度:
if(oneCondition)
{
performOne();
performOne_two();
} else
{
performTwo();
performTwo_two();
}
abc();
def();
gh();
(相对而言,第一个版本大约需要585ms,而第二个版本大约需要610-630ms)。
有人可以解释我为什么吗?
这是代码部分:(它是神经网络的反向传播算法的一部分)
https://pastebin.com/9WfEJdPt //我继续前进
答案 0 :(得分:1)
链接的代码将相同的功能与不同的数据馈送/参数一起使用。您的JIT显然找到了一种针对至少一种矩阵类型优化至少一种常用函数的方法。您很可能已经using (IDbConnection dbConn = sql.createConnection(ProgOps.connectionString))
{
// Start Transaction
dbConn.Open();
for (int i = 0; i < itemCount; i++)
{
// Get Item Dataset
dbDataset = sql.searchItemDetails(itemID[i]); // SELECT * FROM Items WHERE itemID = @itemID
IDbTransaction dbTrans = sql.createTransaction(dbConn);
// Update Item
await sql.updateItem(itemID[i], dbConn, dbTrans); // UPDATE Items SET price = @price WHERE itemID = @itemID
dbTrans.Commit(); // i think this is the command, pulling from memory
}
}
或pExpectedOutput
进行了硬编码。理想情况下,JIT应该能够自己进行区分,从而消除了对冗余代码的需求。