java - 比较 c 和 java 程序运行时

标签 java c

我今天去面试,给了一道编程题,要求用c/c++/Java解决,我用java解决了,运行时间是3秒(测试多了16000行,还有陪我们的人说运行时间合理),另一个人用c解决了,运行时间是0.25秒,所以我想知道,12的因数正常吗?

编辑: 正如我所说,我不认为算法变化的空间真的很大,除了一件小事,无论如何,我们必须实现这个协议(protocol): A(客户端)和 B(服务器)根据某种协议(protocol) p 进行通信,在传递消息之前检查其有效性,该协议(protocol)由其状态和处于特定状态时可以发送的文本消息定义,在所有状态都只能发送一个有效消息,除了在一个状态下可以发送大约 10 条消息,有 5 个状态,状态转换也由协议(protocol)定义。 所以我对可以发送 10 条不同消息的状态所做的是将它们的字符串值存储在 ArrayList 容器中,然后当我需要检查相应状态下的消息有效性时,我检查了 arrayList.contains(sentMessageStr);我认为这个操作的复杂度是 O(n),尽管我认为 java 对此操作有一些内置的优化,虽然现在我正在考虑它,也许我应该使用 HashSet 容器。我想 c 实现本来可以将这些预定义的合法字符串按字典顺序存储在数组中并实现二分查找功能。

谢谢

最佳答案

我猜想 jvm 很可能只是为了加载就占用了这 3 秒的大部分时间。尝试在同一台机器上连续运行您的 Java 版本 5 次。或者尝试在 500 倍大的数据集上运行两者。我怀疑您会看到 Java 版本的显着持续延迟,当运行时间进入几分钟后,这种延迟将变得微不足道。

关于java - 比较 c 和 java 程序运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3347074/

相关文章:

c - 在文本中搜索字符 block (单词)

java - 简单函数 java String 到 Int/Reverse

java - 想要一个用于验证印度车辆号码格式的正则表达式吗?

java - 通过另一个类使用 setter 时发生堆栈溢出异常

c - Redis添加 `dict`时地址边界错误如何解决?

c - 如果我们将静态变量定义为全局变量,那么它的作用域应该在该文件内,但在这里我得到了不同的结果

java - 从 Cobol 调用 Java 程序

java - bson.ObjectId 使用 gson 序列化

C : system() call inside chroot

c - 打印数组中的第一个索引会使用 C 打印每个索引