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%多。

相关推荐
500841 小时前
昇腾 CANN 的五层架构,到底分了哪五层
java·人工智能·分布式·架构·ocr·wpf
摇滚侠1 小时前
Java 零基础全套教程,File 类与 IO 流,笔记 177-178
java·开发语言·笔记
雨落在了我的手上2 小时前
初始java(十):类和对象(⼆)
java·开发语言
莫雪歌3 小时前
Java AI 应用开发实践:基于 Spring Boot 实现 Chat、Memory、RAG 与 Tool Calling
java·aigc
SmartBrain3 小时前
AI全栈开发(SDD):慢病管理系统工程级设计
java·大数据·开发语言·人工智能·架构·aigc
梦想CAD控件3 小时前
网页端对DWG图纸进行预览与批注(CAD轻量化)
java·前端·javascript
老毛肚4 小时前
Spring boot 特性和自写Reids组件
java·spring boot·后端
baivfhpwxf20234 小时前
c# 中对像之间频繁的转换会慢吗?
开发语言·c#
极光代码工作室4 小时前
基于SpringBoot的课程管理系统
java·springboot·web开发·后端开发
JustNow_Man4 小时前
【opencode】安装使用daytona沙箱插件
android·java·javascript