java和c#比较(一)jdbc VS ado.net取100万条记录到内存

java代码:

java 复制代码
 String databaseUrl = "jdbc:sqlite:" + selectedFile.getPath();
        ObservableList<ObservableList<Object>> masterData = FXCollections.observableArrayList();

        try (Connection connection = DriverManager.getConnection(databaseUrl)) {
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery("SELECT * FROM H_113_Sheet1");
            ResultSetMetaData metaData = resultSet.getMetaData();
            int columnCount = metaData.getColumnCount(); // 获取列的数量

            while (resultSet.next()) {
                ObservableList<Object> row = FXCollections.observableArrayList();
                for (int i = 1; i <= columnCount; i++) {
                    row.add(resultSet.getObject(i));
                }
                masterData.add(row);
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }

c#代码:

cs 复制代码
 string databaseUrl = "Data Source=" + selectedFilePath; 
        List<List<object>> masterData = new List<List<object>>();

        using (SQLiteConnection connection = new SQLiteConnection(databaseUrl))
        {
            connection.Open();
            using (SQLiteCommand command = new SQLiteCommand("SELECT * FROM H_113_Sheet1", connection))
            {
                using (SQLiteDataReader reader = command.ExecuteReader())
                {
                    DataTable schemaTable = reader.GetSchemaTable();
                    int columnCount = schemaTable.Columns.Count;

                    while (reader.Read())
                    {
                        List<object> row = new List<object>();
                        for (int i = 0; i < columnCount; i++)
                        {
                            row.Add(reader.GetValue(i));
                        }
                        masterData.Add(row);
                    }
                }
            }
        }

        catch (SQLiteException e)
        {
            Console.WriteLine(e.ToString());
        }

结论:同样的一个sqlite数据库表,同样一台电脑,单机测试数据读取到内存。

java jdbc ,c# ado.net

java jdbc:用时26秒,内存占用2.58G。

c# ado.net:用时34秒,内存占用1.68。

就是说取数这项,java内存占用是.net的1.5倍,速度比.net快30%多。

相关推荐
什巳23 分钟前
JAVA练习275-乘积最大子数组
java·开发语言·数据结构·算法
lang2015092827 分钟前
Apache POI Word(docx) 实战教程:从入门到精通表格合并、图片插入与文档合并
java·开发语言·word
小牛不牛的程序员29 分钟前
利用Claude Code构建自动化需求挖掘工具:从原理到实践
java·算法·自动化
wear工程师31 分钟前
腾讯天美一面:从 HashMap 到 Spring 事务,面试官这套连环问到底在考什么
java·面试
浩瀚地学1 小时前
【Java基础复习】IO流(二)
java·开发语言·经验分享·笔记·学习
hdsoft_huge1 小时前
SpringBoot系列06:RESTful接口开发,请求参数接收、全局跨域CORS完整配置
java·spring boot
IVVi0jToe1 小时前
高效C++线程池设计与实现
java·c++·安全
CRMEB定制开发2 小时前
企业级Java电商系统选型路线图:从零到上线全流程拆解
java·开发语言·商城系统·小程序商城
Zhou1411362 小时前
Java常见面试题3
java·开发语言
Solis2 小时前
百万并发的点赞计数,我们为什么要把“事实“和“计数“拆开?
java·架构