C#对象创建比构造函数调用慢得多
发布时间:2020-12-15 19:54:59 所属栏目:百科 来源:网络整理
导读:对于我的生活,我无法弄清楚我的代码中的性能影响.我有一个容器对象,我在其中测量运行构造函数(下面的对象)所需的时间,公共构造函数中的计时代码 public class WorkUnit : IWorkUnit{ private JobInformation m_JobInfo; private MetaInfo m_MetaInfo; privat
|
对于我的生活,我无法弄清楚我的代码中的性能影响.我有一个容器对象,我在其中测量运行构造函数(下面的对象)所需的时间,公共构造函数中的计时代码
public class WorkUnit : IWorkUnit
{
private JobInformation m_JobInfo;
private MetaInfo m_MetaInfo;
private IPreProcJobInfo m_PreprocDetails;
readonly private Guid m_ID;
private Guid m_ParentID;
private Guid m_MasterJobID;
private string m_ErrorLog = string.Empty;
private PriorityKeeper m_Priority;
private WorkUnitClassification m_Classification;
private IJobPayload m_CachedPayload;
private IJobLogger m_Logger;
private EventHandler<JobEventArgs> m_IsFinished;
private ReaderWriterLockSlim m_Lock;
public WorkUnit(string InputXML,Guid JobID,IJobLogger Logger)
{
DateTime overstarttime = DateTime.Now;
try
{
....Do Stuff....
}
catch(XMLException e)
{...}
catch(Exception e)
{
...
throw;
}
double time = (DateTime.Now - overstarttime).TotalMilliseconds
Console.WriteLine("{0}",time);
}
/// <summary>
/// Private Constructor used to create children
/// </summary>
private WorkUnit(Guid MasterID,Guid ParentID,WorkUnitClassification Classification,PriorityKeeper Keeper)
{...}
[OnDeserializing()]
private void OnDeserialize(StreamingContext s)
{...}
public PriorityKeeper PriorityKey
{...}
public bool HasError
{...}
public bool Processing
{...}
public bool Splittable
{...}
public IEnumerable<IWorkUnit> Split(int RequestedPieces,int Bonds)
{...}
public void Merge(IResponse finishedjob)
{...}
public ReadOnlyCollection<IWorkUnit> Children
{...}
public bool IsMasterJob
{...}
public Guid MasterJobID
{...}
public Guid ID
{...}
public Guid ParentID
{...}
public EnumPriority Priority
{...}
public void ChangePriority(EnumPriority priority)
{...}
public string ErrorLog
{...}
public IMetaInfo MetaData
{...}
public IJobPayload GetProcessingInfo()
{... }
public IResponseGenerator GetResponseGenerator()
{... }
}
现在,我正在测量创建对象所需的总时间 DateTime starttime = DateTime.Now; var test = new WorkUnit(temp,JobID,m_JobLogger); double finished = (DateTime.Now - starttime).TotalMilliseconds; 我一直得到以下表现数字 – 构造函数时间 – 47毫秒 对象创建时间 – 387毫秒 47毫秒是可以接受的,387真的很糟糕.取出记录可以忽略不计地改变这些数字.有谁知道为什么这么长时间?我的系统是VS 2008 SP1,针对Windows XP上的.NET 3.5 SP1.我将不胜感激任何解释.我将很快打破探查器,但我觉得它无法深入研究解释这种行为所需的水平.谢谢你的帮助. 编辑:我正在发布 解决方法
你确定你所看到的是对象创建时间而不是CLR启动的效果吗?
尝试在循环中运行测试50次并忽略第一个结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
