Tag: java

Java比C快吗?

到目前为止我听到的所有内容都是人们说Java通常比C慢,但有一些例外(比如涉及代码什么都不做)。 所以我出去测试它。 我有一个介于0和999,999之间的100,000个整数数组。 我在C和java(在OS X上编译)中使用了一个双循环来从最小到最大排序。 结果是Java通常在一半时间内完成。 在使用不同arrays的5次运行中,Java占用大约17秒,而C占用大约32秒(包括从文件中分配和填充arrays的时间,两者都可以忽略不计)。 那么什么会使Java代码比C运行得更快呢? 是否有我遗漏的东西,或者我听不到的一些基础技术? 编辑:也不确定它是否重要,但我使用time命令计时,而不是任何自定义代码。 例如: $time java SortArray 至于编译器选项,我现在无法访问该命令行,但它是OS X 10.10上的默认gcc选项: gcc sortarray.c -o sortarray 我只是使用默认的javac来编译Java。 javac SortArray.java C: #include #include #define SIZE 32 int main() { FILE* file = fopen(“bigarray.txt”, “r”); int arraySize = 100000; int array[100000] = {}; int i, j, temp; char inputBuffer[SIZE]; for (i = […]

主要function不返回任何东西。 为什么?

关于C / C ++,main()必须始终返回一个整数(零表示成功,非零表示失败)。 我可以理解这一点,因为程序运行它变成一个进程,每个进程都应该有一个退出状态,我们通过echo $获得? 在进程结束后从shell中获取。 现在我不明白为什么main方法不能在Java中返回任何内容? 是否与程序在JVM上运行并且JVM进程可以返回以返回退出状态这一事实有什么关系? 请澄清。 谢谢, 罗杰

Java有垃圾收集和为什么C和C ++语言没有垃圾收集?

我知道C ++语言中有malloc / free,而C ++语言中有new / using-a-destructor用于内存管理,但我想知道为什么这些语言没有“新更新”自动内存管理(垃圾)采集)? java有垃圾收集工具,为什么没有C&C ++ 任何人都可以为此简要解释一下吗?

可以在ZeroMQ中回复吗?

我正在ZeroMQ中实现Lamport的分布式MUTEX算法 。 算法: 请求流程 1)将其请求推送到自己的队列中(按时间戳排序) 2)向每个节点发送请求。 3)等待来自所有其他节点的回复。 4)如果自己的请求位于其队列的头部并且已收到所有回复,请输入关键部分。 5)退出临界区时,从队列中删除其请求并向每个进程发送一条释放消息。 其他流程 1)收到请求后,将请求推送到自己的请求队列中(按时间戳排序)并回复时间戳。 2)收到释放消息后,从自己的请求队列中删除相应的请求。 我正在考虑用C或Java编写解决方案,但问题的核心似乎是语言中立的。 在我的问题中,我有三种消息类型,让我们称它们为Request , Reply和Release 。 Request / Reply消息很好地适合REQ / REP模式,但Release消息是单向信号,不需要回复。 我可以添加一个额外的PUB / SUB对,但是,根据我的理解,我将无法保证系统中的FIFO传送顺序,因为我最终会有两个并发的TCP连接(这个假设是正确的吗?)。 我可以使用一个基本的非约束fullduplex通道。 另一个答案建议使用DEALER / ROUTER对,但对于这样一个简单的问题来说似乎有些过分。 在文档中,在高级请求 – 回复模式章节中描述了DEALER / ROUTER,我的问题似乎不需要极端的解决方案。 我的问题怎么解决?

为什么Java方法中不允许使用静态变量,因为它们在C / C ++函数中?

在C和C ++中,您可以: void foo() { static int i = 0; ++i; } 但是,在Java中,你会得到一个’Illegal modifier for parameter’错误: public void foo() { static int i =0; ++i; } 我不是在寻找原因,为什么或为什么不这是一个好/坏的想法。 我只是好奇为什么这在C / C ++中是合法的,而不是Java 。

Swig:将Java中的字节数组传递给C语言

我正在尝试使用Swig创建用于将byte []传递给C的Java实现。 痛饮: %include “typemaps.i” %apply(char *STRING, int LENGTH) { (char *buff, int len) }; %inline { typedef struct { char* buff; int len; } workit_t; } 在我生成的java类(workit_t.java)中,参数buff是String,而不是byte []。 Java的: public void setBuff(String value){ … } 我的swig定义中我做错了什么? 当我编写一个没有结构的简单swig定义时,我得到了所需的参数类型。 痛饮: %include “typemaps.i” %apply(char *STRING, int LENGTH) { (char *buff1, int *len1) }; Java的: public static void […]

需要澄清BODMAS规则

在BODMAS规则中,操作的顺序是括号,顺序,除法,乘法加法和减法。除法,乘法,加法和减法遵循递减,递增,递增和递减顺序.BODMAS规则系列不遵循相同的顺序。并且我的问题是为什么加法后面是减法,而不是减法后加法。

通信ac服务器和java客户端时出错

我正在尝试在C中创建一个带有multithreading支持的tcp echo服务器和用java编写的客户端,两者都使用套接字进行通信。 通信开始很好,但不知何故,在服务器和客户端之间传递的字符串经过几次尝试(添加新的行字符或发送的旧消息片段)后开始“损坏”。 我搜索了论坛,并认为问题是C的空字符,但在java中删除它没有任何区别。 这是C服务器的代码: #include #include #include #include #include /* See NOTES */ #include #include #include #include #include #include #include #include #include struct message { int operacion; int dato; }; int max_attempts; int obtenerMaxAttempts() { FILE *fp; fp = fopen(“server.conf”, “r”); if (fp == NULL) { perror(“Error abriendo fichero”); printf(“Errno:%d”, errno); } char line[LINE_MAX]; […]

Ada中的AI库框架

我正在寻找一个Ada构建的AI框架。 我认为Ada由于其任务和实时机制而非常适合实现时间和随机范式,但没有找到任何试图建立这样的库的人。 实际上我也没有在其他语言上找到强大的实现。 对于C#,我找到了http://www.c-sharpcorner.com/1/56/ ,而对于C ++,我找到了http://mind.sourceforge.net/cpp.html,但两者都没有得到太多人气。 也许java也有很好的AI库,但我不知道。 那么,你知道Ada的实现吗? 对更多的人有用吗? 如果您了解其他语言的库,那么了解和比较java中的实现模型会很有用。 谢谢。

带负数的Mod在Java和C中给出否定结果

假设我有(-5) mod 8 。 我用Java和C两种语言尝试过,当我期待3时,他们给了我-5结果。 为什么会这样? 模数可以为负数吗? 我应该改变什么来获得正确的结果? Java代码 public class Example { public static void main(String[] args) { int x; x = -5%8; System.out.println(x); } } C代码 int main(){ int x; x = -5%8; printf(“%d”, x); } 产出