Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检测;解析时间“;在XSLT转换中使用C#代码?_C#_Xslt - Fatal编程技术网

如何检测;解析时间“;在XSLT转换中使用C#代码?

如何检测;解析时间“;在XSLT转换中使用C#代码?,c#,xslt,C#,Xslt,我已经编写了一个用于触发XML到XML(XSLT)转换的C#代码。由于转换取决于XML的大小,并且我的输入XML文件可能从千字节到兆字节不等,因此我希望检测“解析输入文件和生成输出所花费的时间”。。我可以通过GUI或控制台显示“值”,没有问题。目的是在变量中保存“以秒或毫秒为单位的时间” 与此想法相关的任何参考或教程链接也会很有帮助。 是否取决于系统配置? 我的意思是,是不是。。解析时间因系统而异,具体取决于环境? 如果是。。那么,是否可以将其作为独立于系统的代码? 急切地等待答复。。 tha

我已经编写了一个用于触发XML到XML(XSLT)转换的C#代码。由于转换取决于XML的大小,并且我的输入XML文件可能从千字节到兆字节不等,因此我希望检测“解析输入文件和生成输出所花费的时间”。。我可以通过GUI或控制台显示“值”,没有问题。目的是在变量中保存“以秒或毫秒为单位的时间”

与此想法相关的任何参考或教程链接也会很有帮助。


是否取决于系统配置?
我的意思是,是不是。。解析时间因系统而异,具体取决于环境?
如果是。。那么,是否可以将其作为独立于系统的代码?
急切地等待答复。。
thanQ.

我不确定自己是否完全理解,但可能只是:

Stopwatch watch = Stopwatch.StartNew();
// where "xslt" is your prepared XslTransform or XslCompiledTransform
xslt.Transform(input, args, results); 
watch.Stop();
TimeSpan elapsed = watch.Elapsed; // how long
如果要以秒和毫秒为单位显示经过的时间:

string seconds = elapsed.TotalSeconds.ToString("0.000");

如果要对解析和转换进行单独计时,请执行以下操作:

Stopwatch watch = Stopwatch.StartNew();
XPathDocument sourceDoc = new XPathDocument(location);
watch.Stop();
TimeSpan parseTime = watch.Elapsed;
watch.Reset();

watch.Start();
xslt.Transform(sourceDoc, args, results);
watch.Stop();
TimeSpan transformTime = watch.Elapsed;

您缺少转换总时间的一个重要部分:编译样式表本身所需的时间

以下是这次如何获得:

// Create the XslCompiledTransform and load the stylesheet.
XslCompiledTransform xslt = new XslCompiledTransform();

Stopwatch watch = Stopwatch.StartNew();  
  xslt.Load("someXsl.xsl");
watch.Stop();   

TimeSpan xsltCompileTime = watch.Elapsed;

请注意,与运行典型的小型转换所需的时间相比,使用
xslcomiledtransform
加载/编译XSLT样式表的时间通常非常长。这就是为什么,在一个生产系统中,人们会考虑缓存一个已加载的样式表,并且在没有负载的情况下再使用它。

不起作用。错误提示:“秒表”未定义或不在当前上下文中..:(使用System.Diagnostics;将
添加到顶部。或者;单击Stopwatch一词并按[Ctrl]+[.]然后按[Ret];或者右键单击->解决->使用{blah}它是否取决于系统配置?我的意思是……解析时间是否会因环境的不同而有所不同?如果是……那么,是否有可能使其成为独立于系统的代码?急切地等待答复。假设您仍然指“解析我的输入文件和生成输出所花费的时间”,则它将始终取决于本地CPU和IO功能-但相同的代码应该是无关紧要的。或者您想要两个数字-一个用于解析输入,一个用于转换?更新示例以显示单独的解析/转换时间您缺少转换总时间中的一个重要部分:编译所需的时间查看样式表本身。有关详细信息,请参见我的答案。:)嘿,你的图片发生了什么?你以前看起来更像詹妮弗·康妮。。。请再把它放回去……:)哦,是的,gravatar.com上有一些bug,我明白了,他们现在恢复了图片。gravatar.com?我应该检查一下这是什么——它们看起来像一只带着彩虹的独角兽…@Dimitre,你是对的,但我在实际实现中对其进行了修改,我只需要一个实现的想法。。因此我接受了马克。。在我的代码中,计时器在XML、XSL文件加载之前启动,在转换完成并生成o/p文件之后停止。。只需要一个计时器,并在控制台窗口中显示转换时间(以毫秒为单位)。。不管怎么说,thanx表示担忧…-)