×

Loading...

Topic

This topic has been archived. It cannot be replied.
  • 工作学习 / IT技术讨论 / 请问熟知C++和JAVA的朋友,哪一个处理大量数据速度较快?公司有个新项目,需要处理大量数据,要求速度快,能使用于UNIT及 WINDDOWS NT平台,使用C++或JAVA。请问到底用那种语言更合适?
    • It seems that you never use Java before. :)
      • 我是没用过java,不知他速度如何?
      • 嘿嘿,如果我用过,基本就不用问了。
    • 语言只是个工具, 主要跟程序design的好坏有关, 一般数据处理部分都由数据库完成, C++或者Java只是发个指令而已
      • 我们这个项目数据量很巨,对速度很敏感,如果慢了,根本就是失败。不同语言还是会有差异的。
      • 如果使用数据库,这个软件会慢的让人无法忍受,将是失败的。所以我们所有的数据处理都将直接用程序语言实现。因而对语言有要求
        • 如果用数据库会慢的让人无法忍受?数据库是干什么用的? 对于大量的数据,如果你能直接编程达到比用数据库更快的效果, 你可以开个专门的数据处理公司了
          • 是大量比较。说简单点儿,就是两个数据文件的模糊比较,比如相差1%也算相等,而且要先根据数据算一个可靠差值,使用这个进行比较,这个差值随时间变化而变化。我觉得用数据库功能达不到这种要求。
            • 哦, 你有计算啊, 程序量小的话可以用C, 大的话就用C++吧, Java就别考虑了
            • 能说说多大的数据量吗? 即同时要比较多少数据.
              • 大约每天的数据文件得有1G bytes
                • 最佳方案: C++配数据库
            • 是AI识别方面的?图象/声音。。。
    • 通常来说, 数据库编程, 速度和所用的语言关系不大, 主要依靠你用的数据接口模式和数据平台. 也就是说那怕和VB相比, C++在数据存取上也没有啥优势的. 所以当然选你最拿手的工具了.
      • 内核,即速度敏感部分,不用数据库。
      • 可以作一些试验,JAVA的内存大程序运行比较慢.
    • if for performance, c++ is better, c is best
      • Agree, C is the best
        • 啊?难道要用C?
          • absolutely, only C
          • I will suggest C. Your project requirement seems focusing on speed and data process. It is C's strong point.
    • If you handle data with database, the bottleneck should be in database. So C++ and Java have no differents. Howerver, if your job needs a lot of calculation, you'd better use C++. Java is not suitable for real time processs.
      • Thanks! Maybe that's why the other guy said that whenever they meet the question C++ or Java, they'll always goto Java. They did all their calculations in database before.
        • If so, just go head with Java. In our department, we also implement our product like these: use C/C++ for time-consuming process, use Java to handle database and GUI.
          • seems a good idea.
    • 应该是c++, 自己可以做很多效率方面的优化.
    • 要追求速度和效率,就想想操作系统用什么语言写的吧?JAVA这种半编译的CODE效率不能和C++比,即使JIT编译还是只有C++的90%效率。面向对象的语言一般在实例化对象的时候比较慢,还不如自己控制内存分配。所以我认为C应该是比较好的选择。
    • 那还用说么,你用Java那叫穿高跟鞋跑步——想快也快不了,你用C++ 那叫口渴碰到清泉水——正合适。
      • ha
        • 每天1G不是主要问题,重要的是同时有多少数据在内存.有人做过FILEFIND的JAVA程序结果是效率和WINDOWS自带的差不多.
          • really? I can think about that. Maybe I can put less data into the memory.
    • 1G的数据量,你得考虑一些问题。
      首先,不管你是放在服务器上运行还是在工作战上,如果你把1G得数据同时掉到内存里,那可也不是闹着玩的(不管你用什么语言),估计工作站是肯定趴下了。如果你分批存取,那你还是得有数据库存取的花费,也就是说,还得依赖数据平台。如果你说把一次取数据,放硬盘上,那其实数据库也是能建立本地数据缓冲的、
      如果你想自己编得话,你有更好得算法吗? 举个列子,你用Quickstore(C里最常用的算法),100个数据比较就是(100*log2)200次,如果一次比较需要0.0001秒,比较100个就是0.02秒,你1G有多少数据,要花多少时间你就自己算吧。
      所以建议,在你有很好的算法前,你应该还是着重点在怎样最合理的设计数据库,及怎样分散进行数据比较,数据分流等等,因为你编的比较方法不一定比数据库系统带的query, stored precedure等算法更快。而你用数据库和你自己编的差别就是数据存取的消耗。但是如果程序编得好,服务器和网络快点,还是可以接受的。

      故,结论是,就算你自己编,效果不会太好,建议将着重点放在数据分析上,即最大可能的进行数据分流等等方面。
      • 有理有理.不用数据库作比较还因为不希望作全面比较,因为根据数据本身的特点,可采用先排序,然后用一个库的每个纪录和另一个库的1-20个比较就能得到结果.至于数据存取,我想得分批读取,否则碰上懒惰的客户,一个月做一次,一定完蛋啦.
      • 另外请教,你说的数据分流是指什么?可以举个例子吗?
        • 呵呵,这词是我自己想出来的。意思就是说,仔细研究数据,找出数据的规律来,然后尽最大可能的将数据分流计算,不然1G的数据放一块算,你就算想破脑袋它也快不起来。
          我自己的看法,对数据库编程来说,数据特性的研究是很重要的一步。新手和老鸟的区别之一就是一个设计的数据库是平面的,即鼻子眼睛一股脑儿,而好的数据库设计是很有层次的。
          • 明白,明白;谢谢,谢谢。
    • 我看你这情况,算法比语言重要,语言不能弥补算法的损失,要说快,汇编更快,在不行就用硬件实现了。 ;)
      • right, 和我想得一样。没好算法之前,还是考虑怎样更好得设计程序和数据库,语言到是其次的。
      • 汇编?吓倒!
    • 我以前有这方面的经验, 肯定是C或C++.java就别考虑啦
    • 最近刚好在作performance comparision. 虽然有无数的例子说真正的好JAVA程序并不比C++逊色多少, 但就数据库操作而言,JDBC 就是慢好多.去看看ORACLE 网站上的JDBCDriver performance 比较
      插入2000 rows (11-column table with 8 NUMBER fields, a CHAR(500)
      field, a DATE field, and a RAW(500) field.)要36秒.
      • Such tests mislead me as well. Actually from the tech-support of Oracle internal ppl, OCI and thin is same speed. They suggest thin whose performance is a little better. --- metalink said.
        Compare JDBC with SQL in C; JDBC is not obviously slower.
    • 主要看是什么类型的数据运算,如果是CPU密集型(多浮点运算),最好用C嵌汇编。如果是硬盘密集型,多字符串和整型运算,最好是用数据库(存储过程),用什么语言不重要。
      • 这倒是提醒一个问题,那个比较的程序用JAVA/C编完后反复使用的代码长度非常重要,如果这部份JAVA代码不能放如CPU的CACHE,而C的可以,那么JAVA和C的运行速度就会差到几十倍!
    • If the database server is Oracle8, pls consider C/C++ plus Pro*C/C++ and multi-thread and Oracle8 PARALLEL data retrieve. If you program will run in a same node with Oracle database server, that will more efficiently
      As for Java, I think it is not suitable for batch process of large quantity data
    • 这两种语言都不好,Cobol是理想选择。跨平台问题不大啦,源代码重新编译就是了。数据库是最笨的选择