这对于编写C#(.NET)或PERL文件来说更快

本文关键字:文件 PERL 于编写 NET | 更新日期: 2023-09-27 18:21:16

我们有很多旧的遗留Perl脚本,它们连接到MS SQL数据库,处理一些记录并制作文件。随着时间的推移,每天的事务大小都在增长,这些脚本也变得越来越昂贵。

此外,数据库随着越来越多的表而增长,修改旧的Perl脚本也很麻烦。正在考虑在.NET(C#)下重做一些主要的脚本

在运行Windows Server的机器下,使用一个与另一个相比是否有速度优势?

同样,这个想法是

  1. 执行查询

  2. 通过一些基本格式处理结果

  3. 将结果写入文件

这对于编写C#(.NET)或PERL文件来说更快

取决于各个程序员的愚蠢程度。当正确初始化时,无论你在磁盘系统上向它们抛出什么带宽,它们都应该能很舒服地饱和——这就是你的瓶颈。进行大量缓存写入(.NET BufferedStream),并确保您有一个SSD或其他快速准备好的东西。正确编程的性能瓶颈是这类工作的光盘子系统。

这两种任务在任何一种语言中都可以同样快速地完成。它们也可能在两种语言中都犯了可怕的错误,而且速度非常慢,所以需要考虑这一点。

在您的另一条评论中,您提到您在SQL服务器端进行格式化。如果你在应用程序端这样做,然后把这个脚本移到更快的机器上,这样对数据库服务器的影响最小,那么这些查询的成本可能会低很多。

我想硬盘速度是你现在最大的问题。你应该在运行这个脚本时监视资源——它会耗尽你的cpu吗?读/写很多东西是为了记忆吗?(不应该)。它大部分时间都在等待磁盘i/o吗?如果是这样,您应该考虑将存储升级到更快的磁盘、raid或ssd,这取决于什么对您的情况最有意义。

即使只是像解除磁盘碎片之类的东西也可能有所帮助。

如果你有很好的cpu/内存可供使用,但无法避免磁盘速度慢,你甚至可以考虑在写入之前压缩内存中的所有输出(同样,假设这是一个好主意,这实际上取决于这些报告的去向和所需的格式)。

在写性能方面,我预计这些语言之间不会有太大差异(通常瓶颈是硬盘,而不是CPU的处理能力)。您应该关注"维护代码的成本",在C#中,您可以获得更干净的代码,更不用说与MSSQL的集成可能会更高效,更不用提您可以使用线程。

更好的代码,更易于维护,也许更快。是的,C#是个好主意