我想知道這兩種將資料插入資料庫的方式之間的性能差異是什么。
我所說的性能差異是服務器資源的標準使用,而不是資料插入資料庫的速度。
在第一個示例中,我將日志添加到資料庫中,但首先將物件設定為區域變數。
public class LogService : ILogService
{
private readonly IUnitOfWork _unitOfWork;
private readonly IMapper _mapper;
public LogService(IUnitOfWork unitOfWork, IMapper mapper)
{
_unitOfWork = unitOfWork;
_mapper = mapper;
}
public async Task AddLog(LogViewModel data)
{
var log = _mapper.Map<Log>(data);
_unitOfWork.Logs.Add(log);
await _unitOfWork.Complete();
}
}
在第二個示例中,該函式執行相同的操作,但不使用區域變數。
public class LogService : ILogService
{
private readonly IUnitOfWork _unitOfWork;
private readonly IMapper _mapper;
public LogService(IUnitOfWork unitOfWork, IMapper mapper)
{
_unitOfWork = unitOfWork;
_mapper = mapper;
}
public async Task AddLog(LogViewModel data)
{
_unitOfWork.Logs.Add(_mapper.Map<Log>(data));
await _unitOfWork.Complete();
}
}
我知道第二種方法的代碼更少,但是首先宣告區域變數所使用的資源是否存在實際差異?
uj5u.com熱心網友回復:
完全沒有區別。零。納達。甚至生成的位元組碼也可能 100% 相同。
區域變數是存在于堆疊上的指標。方法呼叫的引數是壓入堆疊的點。注意到相似之處了嗎?
如果您認為存在差異,請轉儲位元組碼(發布版本,而不是除錯版本)并進行比較。如果您仍然不相信,請運行基準測驗或分析您的應用程式。
更重要的是:資料庫訪問比在記憶體中做任何事情都要慢數千倍(每個程式員都應該知道的延遲數):
L2 cache reference 7 ns 14x L1 cache Main memory reference 100 ns Round trip within same datacenter 500,000 ns 500 us
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/514357.html
下一篇:同時應用兩個條件時查詢變慢
