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

相关推荐
爱敲点代码的小哥几秒前
Directoy文件夹操作对象 、StreamReader和StreamWriter 和BufferedStream
开发语言·c#
这是程序猿3 分钟前
基于java的ssm框架经典电影推荐网站
java·开发语言·spring boot·spring·经典电影推荐网站
Nan_Shu_6148 分钟前
学习:Java (1)
java·开发语言·学习
花花无缺12 分钟前
搞清‘’时区设置‘’以及Mysql的`DATETIME` 和 `TIMESTAMP`
java·mysql
曹牧13 分钟前
Java:String.startsWith 方法
java·开发语言
jiayong2315 分钟前
海外求职平台与策略指南
java·spring
SadSunset23 分钟前
(37)全注解式开发AOP
java·spring
秃然想通25 分钟前
Java多态完全指南:深入理解“一个接口,多种实现”
java·开发语言
TT哇25 分钟前
Optional<T>
java·spring boot·java-ee
李拾叁的摸鱼日常33 分钟前
Java泛型基本用法与PECS原则详解
java·后端·面试