vs建设网站,5118站长工具,赣州建设培训网官网,做落地页的网站在上一篇文章中#xff0c;我描述了如何将25k行C#xff03;转换为Java以及从该练习中学到的教训。 我收到以下问题#xff1a; 顺便说一句很棒的文章。 迁移代码后#xff0c;性能与C#xff03;版本相比如何#xff1f; 改写系统的动机之一是使系统变得更快#xff… 在上一篇文章中我描述了如何将25k行C转换为Java以及从该练习中学到的教训。 我收到以下问题 顺便说一句很棒的文章。 迁移代码后性能与C版本相比如何 改写系统的动机之一是使系统变得更快而实际上这一目标得以实现。 我们设法将硬件数量减少了5倍同时仍将系统的吞吐量提高了6倍。这给客户带来了很多好处。 最初的假设是C实际上并不比Java慢并且我们必须实现一些高级技术才能获得显着的性能提升。 发生这种情况时只需重新编写系统即可获得收益。 那么C比Java慢吗 一言以蔽之。 虽然我没有在可比较的硬件上运行任何正式的基准测试但我的轶事证据是在类似情况下性能是可比的。 但是我发现确实很容易在C中围绕数据访问构建一个错误的系统。 C和SqlServer之间存在极其紧密的联系。 Visual Studio实际上是两者的前端。 有趣的是我遇到的C开发人员与SQLServer一样精通C。 毕竟几乎所有系统都需要处理存储在数据库中的数据这听起来不错因此两者之间的紧密集成应该是可行的方法。 好是的不是。 拥有出色的工具和技能以使您能够访问和操纵数据真是太好了但绝不能忘记“数据聊天”的性能成本。 我正在使用的系统的主要问题是数据访问已紧密集成到代码中。 每当需要一条数据时都会对数据库进行调用。 实际上在某些情况下可以在代码中执行的逻辑是在SQLServer的存储过程中执行的。 只要计算出结果就将其写回到数据库中。 不仅效率极低而且使系统更难以理解。 我们要做的第一件事是在数据和代码之间建立清晰的分隔。 使用bcp从数据库中批量导出了程序运行所需的所有数据这些文件用于创建保存在程序存储器中的对象。 一旦计算出所有结果它们就会被写入文件然后bcp备份到数据库中。 这消除了程序与服务器之间不断的“闲聊”并大大加快了系统速度。 这也使系统的输入和输出非常透明。 将数据库调用掩埋在代码中会使输入和输出变得相当不透明。 因为我们使用的是Java并且无法访问与SQLServer的紧密耦合所以我们被迫遵循一项重要的良好实践即“从处理过程中分离数据”。 这是实现性能改进的关键。 所有这些都不表示CSQLServer和Visual Studio之间的集成是一件坏事。 实际上恰恰相反它是一个非常强大的工具如果不加理解和小心处理与所有强大工具一样这将是危险的。 翻译自: https://www.javacodegeeks.com/2015/05/c-vs-java-which-one-is-faster-translating-25k-c-into-java-2.html