数据库性能测试2:内存数据库

继上一篇 数据库性能测试:Mysql、Sqlite、Duckdb 之后,做了一下内存数据库的性能测试,这里主要比较的是 Sqlite、Duckdb以及我这边使用容器实现的一个简单内存数据库,因为Sqlite和Duckdb都支持内存数据库模式,于是打算对比一下。Redis由于是要通过网络通信交互,没有列入比较。

Duckdb使用内存模式仅需要在创建数据库时,传入的数据库名称指定null即可,Sqlie这边需要改用 sqlite3_open_v2 来创建数据库,并且需要指定 flags 参数包含 SQLITE_OPEN_MEMORY,具体创建语句如下:

sqlite3* db;
auto ret = sqlite3_open_v2(nullptr, &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE |SQLITE_OPEN_MEMORY, nullptr);

单主键下duckdb与sqlite写入耗时对比:

20240829-08:52:03.618 10560 INFO WriteToDuckdb:9246 ms, RecordCount:6779139		---DuckdbTest.cpp:133[WriteToDuckdb]
20240829-08:53:07.506 10560 INFO WriteToSqlitebatchCost:61116 ms, RecordCount:6779139		---SqliteTest.cpp:131[WriteToSqliteBatch]

对比前面在文件模式(参考这篇文章中的数据:数据库性能测试:Mysql、Sqlite、Duckdb )下的写入速度还是提升不少的。

单主键下duckdb与sqlite查询耗时对比:

20240829-08:52:03.624 10560 INFO ReadFromDuckdbIndex QueryCost:3 ms, ParseCost:2 ms, RecordCount:9340		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-08:52:03.632 10560 INFO ReadFromDuckdbIndex QueryCost:3 ms, ParseCost:3 ms, RecordCount:11831		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-08:52:03.636 10560 INFO ReadFromDuckdbIndex QueryCost:2 ms, ParseCost:0 ms, RecordCount:2799		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-08:52:03.643 10560 INFO ReadFromDuckdbIndex QueryCost:2 ms, ParseCost:3 ms, RecordCount:15019		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-08:52:03.654 10560 INFO ReadFromDuckdbIndex QueryCost:5 ms, ParseCost:5 ms, RecordCount:21515		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-08:52:03.659 10560 INFO ReadFromDuckdbIndex QueryCost:3 ms, ParseCost:1 ms, RecordCount:5115		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-08:52:03.665 10560 INFO ReadFromDuckdbIndex QueryCost:3 ms, ParseCost:2 ms, RecordCount:9451		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-08:52:03.672 10560 INFO ReadFromDuckdbIndex QueryCost:4 ms, ParseCost:2 ms, RecordCount:9171		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-08:52:03.676 10560 INFO ReadFromDuckdbIndex QueryCost:2 ms, ParseCost:1 ms, RecordCount:6869		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-08:52:03.682 10560 INFO ReadFromDuckdbIndex QueryCost:2 ms, ParseCost:2 ms, RecordCount:8711		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-08:52:06.062 10560 INFO ReadFromDuckdb QueryCost:356 ms, ParseCost:2023 ms, RecordCount:6779139		---DuckdbTest.cpp:197[ReadFromDuckdb]20240829-08:53:07.514 10560 INFO ReadFromSqliteIndex QueryCost:7 ms, RecordCount:9340		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-08:53:07.520 10560 INFO ReadFromSqliteIndex QueryCost:5 ms, RecordCount:11831		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-08:53:07.522 10560 INFO ReadFromSqliteIndex QueryCost:1 ms, RecordCount:2799		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-08:53:07.530 10560 INFO ReadFromSqliteIndex QueryCost:7 ms, RecordCount:15019		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-08:53:07.541 10560 INFO ReadFromSqliteIndex QueryCost:10 ms, RecordCount:21515		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-08:53:07.545 10560 INFO ReadFromSqliteIndex QueryCost:2 ms, RecordCount:5115		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-08:53:07.550 10560 INFO ReadFromSqliteIndex QueryCost:4 ms, RecordCount:9451		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-08:53:07.555 10560 INFO ReadFromSqliteIndex QueryCost:4 ms, RecordCount:9171		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-08:53:07.559 10560 INFO ReadFromSqliteIndex QueryCost:3 ms, RecordCount:6869		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-08:53:07.563 10560 INFO ReadFromSqliteIndex QueryCost:4 ms, RecordCount:8711		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-08:53:10.498 10560 INFO ReadFromSqlite QueryCost:0 ms, ParseCost:2934 ms, RecordCount:6779139		---SqliteTest.cpp:180[ReadFromSqlite]

查询性能对比文件模式下,相差也不大,duckdb的内存模式下跟文件模式下查询耗时基本持平,sqlite内存模式比文件模式每次大约快1ms(约10%-25%)的样子。

因为本次测试引入了我自己的一套内存数据库,相较于上一次的测试,本次对所有数据库增加了一个合约代码的索引,增加索引后,Duckdb的写入性能下降比较严重,而查询性能几乎没变。sqlite 在增加索引后,写入与查询性能都跟之前相差不大。

windows下写入耗时对比:

20240829-11:15:11.642 21688 INFO WriteToDuckdb:115186 ms, RecordCount:6779139		---DuckdbTest.cpp:133[WriteToDuckdb]20240829-11:16:19.737 21688 INFO WriteToSqlitebatchCost:65104 ms, RecordCount:6779139		---SqliteTest.cpp:131[WriteToSqliteBatch]20240829-11:16:30.411 21688 INFO WriteToMdb:7247 ms, RecordCount:6779139		---MdbTest.cpp:60[WriteToMdb]

linux下写入耗时对比:

20240829-11:06:07.588 472875264 INFO WriteToDuckdb:108009 ms, RecordCount:6779139               ---DuckdbTest.cpp:133[WriteToDuckdb]20240829-11:07:35.848 472875264 INFO WriteToSqlitebatchCost:80476 ms, RecordCount:6779139               ---SqliteTest.cpp:131[WriteToSqliteBatch]20240829-11:07:48.812 472875264 INFO WriteToMdb:8784 ms, RecordCount:6779139            ---MdbTest.cpp:60[WriteToMdb]

windows下查询耗时对比:

20240829-11:15:11.669 21688 INFO ReadFromDuckdbIndex QueryCost:23 ms, ParseCost:2 ms, RecordCount:9340		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:15:11.677 21688 INFO ReadFromDuckdbIndex QueryCost:3 ms, ParseCost:2 ms, RecordCount:11831		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:15:11.681 21688 INFO ReadFromDuckdbIndex QueryCost:2 ms, ParseCost:0 ms, RecordCount:2799		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:15:11.689 21688 INFO ReadFromDuckdbIndex QueryCost:3 ms, ParseCost:3 ms, RecordCount:15019		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:15:11.700 21688 INFO ReadFromDuckdbIndex QueryCost:5 ms, ParseCost:5 ms, RecordCount:21515		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:15:11.706 21688 INFO ReadFromDuckdbIndex QueryCost:3 ms, ParseCost:1 ms, RecordCount:5115		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:15:11.712 21688 INFO ReadFromDuckdbIndex QueryCost:3 ms, ParseCost:2 ms, RecordCount:9451		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:15:11.718 21688 INFO ReadFromDuckdbIndex QueryCost:3 ms, ParseCost:2 ms, RecordCount:9171		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:15:11.722 21688 INFO ReadFromDuckdbIndex QueryCost:2 ms, ParseCost:1 ms, RecordCount:6869		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:15:11.728 21688 INFO ReadFromDuckdbIndex QueryCost:2 ms, ParseCost:1 ms, RecordCount:8711		---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:15:14.253 21688 INFO ReadFromDuckdb QueryCost:508 ms, ParseCost:2017 ms, RecordCount:6779139		---DuckdbTest.cpp:197[ReadFromDuckdb]20240829-11:16:19.743 21688 INFO ReadFromSqliteIndex QueryCost:5 ms, RecordCount:9340		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:16:19.749 21688 INFO ReadFromSqliteIndex QueryCost:5 ms, RecordCount:11831		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:16:19.751 21688 INFO ReadFromSqliteIndex QueryCost:1 ms, RecordCount:2799		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:16:19.759 21688 INFO ReadFromSqliteIndex QueryCost:7 ms, RecordCount:15019		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:16:19.771 21688 INFO ReadFromSqliteIndex QueryCost:10 ms, RecordCount:21515		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:16:19.774 21688 INFO ReadFromSqliteIndex QueryCost:2 ms, RecordCount:5115		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:16:19.780 21688 INFO ReadFromSqliteIndex QueryCost:5 ms, RecordCount:9451		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:16:19.786 21688 INFO ReadFromSqliteIndex QueryCost:5 ms, RecordCount:9171		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:16:19.789 21688 INFO ReadFromSqliteIndex QueryCost:3 ms, RecordCount:6869		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:16:19.794 21688 INFO ReadFromSqliteIndex QueryCost:4 ms, RecordCount:8711		---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:16:22.733 21688 INFO ReadFromSqlite QueryCost:0 ms, ParseCost:2939 ms, RecordCount:6779139		---SqliteTest.cpp:180[ReadFromSqlite]20240829-11:16:30.411 21688 INFO ReadFromMdb:230 us, RecordCount:9340		---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:16:30.412 21688 INFO ReadFromMdb:170 us, RecordCount:11831		---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:16:30.412 21688 INFO ReadFromMdb:35 us, RecordCount:2799		---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:16:30.412 21688 INFO ReadFromMdb:226 us, RecordCount:15019		---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:16:30.412 21688 INFO ReadFromMdb:337 us, RecordCount:21515		---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:16:30.412 21688 INFO ReadFromMdb:189 us, RecordCount:5115		---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:16:30.413 21688 INFO ReadFromMdb:192 us, RecordCount:9451		---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:16:30.413 21688 INFO ReadFromMdb:120 us, RecordCount:9171		---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:16:30.413 21688 INFO ReadFromMdb:193 us, RecordCount:6869		---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:16:30.414 21688 INFO ReadFromMdb:88 us, RecordCount:8711		---MdbTest.cpp:92[ReadFromMdbIndex]

linux下查询耗时对比:

20240829-11:06:07.872 472875264 INFO ReadFromDuckdbIndex QueryCost:279 ms, ParseCost:4 ms, RecordCount:9340             ---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:06:07.879 472875264 INFO ReadFromDuckdbIndex QueryCost:4 ms, ParseCost:2 ms, RecordCount:11831              ---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:06:07.885 472875264 INFO ReadFromDuckdbIndex QueryCost:3 ms, ParseCost:0 ms, RecordCount:2799               ---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:06:07.894 472875264 INFO ReadFromDuckdbIndex QueryCost:6 ms, ParseCost:3 ms, RecordCount:15019              ---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:06:07.909 472875264 INFO ReadFromDuckdbIndex QueryCost:9 ms, ParseCost:4 ms, RecordCount:21515              ---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:06:07.917 472875264 INFO ReadFromDuckdbIndex QueryCost:5 ms, ParseCost:1 ms, RecordCount:5115               ---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:06:07.924 472875264 INFO ReadFromDuckdbIndex QueryCost:5 ms, ParseCost:1 ms, RecordCount:9451               ---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:06:07.929 472875264 INFO ReadFromDuckdbIndex QueryCost:3 ms, ParseCost:1 ms, RecordCount:9171               ---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:06:07.935 472875264 INFO ReadFromDuckdbIndex QueryCost:3 ms, ParseCost:1 ms, RecordCount:6869               ---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:06:07.940 472875264 INFO ReadFromDuckdbIndex QueryCost:3 ms, ParseCost:1 ms, RecordCount:8711               ---DuckdbTest.cpp:229[ReadFromDuckdbIndex]
20240829-11:06:14.760 472875264 INFO ReadFromDuckdb QueryCost:1899 ms, ParseCost:4920 ms, RecordCount:6779139           ---DuckdbTest.cpp:197[ReadFromDuckdb]20240829-11:07:35.860 472875264 INFO ReadFromSqliteIndex QueryCost:10 ms, RecordCount:9340              ---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:07:35.873 472875264 INFO ReadFromSqliteIndex QueryCost:12 ms, RecordCount:11831             ---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:07:35.876 472875264 INFO ReadFromSqliteIndex QueryCost:2 ms, RecordCount:2799               ---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:07:35.885 472875264 INFO ReadFromSqliteIndex QueryCost:8 ms, RecordCount:15019              ---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:07:35.898 472875264 INFO ReadFromSqliteIndex QueryCost:12 ms, RecordCount:21515             ---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:07:35.902 472875264 INFO ReadFromSqliteIndex QueryCost:2 ms, RecordCount:5115               ---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:07:35.910 472875264 INFO ReadFromSqliteIndex QueryCost:7 ms, RecordCount:9451               ---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:07:35.916 472875264 INFO ReadFromSqliteIndex QueryCost:5 ms, RecordCount:9171               ---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:07:35.920 472875264 INFO ReadFromSqliteIndex QueryCost:3 ms, RecordCount:6869               ---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:07:35.927 472875264 INFO ReadFromSqliteIndex QueryCost:5 ms, RecordCount:8711               ---SqliteTest.cpp:231[ReadFromSqliteIndex]
20240829-11:07:39.712 472875264 INFO ReadFromSqlite QueryCost:0 ms, ParseCost:3784 ms, RecordCount:6779139              ---SqliteTest.cpp:180[ReadFromSqlite]20240829-11:07:48.813 472875264 INFO ReadFromMdb:248 us, RecordCount:9340               ---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:07:48.813 472875264 INFO ReadFromMdb:136 us, RecordCount:11831              ---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:07:48.813 472875264 INFO ReadFromMdb:41 us, RecordCount:2799                ---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:07:48.813 472875264 INFO ReadFromMdb:179 us, RecordCount:15019              ---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:07:48.813 472875264 INFO ReadFromMdb:298 us, RecordCount:21515              ---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:07:48.813 472875264 INFO ReadFromMdb:58 us, RecordCount:5115                ---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:07:48.813 472875264 INFO ReadFromMdb:93 us, RecordCount:9451                ---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:07:48.814 472875264 INFO ReadFromMdb:96 us, RecordCount:9171                ---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:07:48.814 472875264 INFO ReadFromMdb:65 us, RecordCount:6869                ---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:07:48.814 472875264 INFO ReadFromMdb:90 us, RecordCount:8711                ---MdbTest.cpp:92[ReadFromMdbIndex]
20240829-11:07:49.315 472875264 INFO ReadFromMdb:498109 us, RecordCount:6779139         ---MdbTest.cpp:75[ReadFromMdb]

因为内存数据库在查询时响应时间均小于1ms,所以这里改用了微秒(ms)。

结论:

在内存模式下(相较与文件模式),duckdb与sqlite的写入性能都有较大的提升,而查询性能提升不大,可能是因为文件模式下,两者都会有缓存的原因。我这边自己实现的简单内存数据库由于没有SQL的一些包袱,也仅支持一些简单的增删改查操作,性能还是要高不少(1-2个数量级)。

duckdb在增加索引的情况下,写入性能直线(指数)下降,而其对查询提升不大,建议在使用时少用索引。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/53017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pyqt5高级技巧:多线程任务、窗体交互、常用控件介绍(含基础Demo)

目录 一、多线程任务和多窗体交互 二、增删改查Demo 三、UI设计 【css效果代码对照表】 【实现效果】 【实现代码】 【常见问题】 Q1:工具栏怎么加,资源图片怎么加 Q2:控件被背景染色怎么办? Q3:QTdesigner有…

LVS的加权轮询算法

http://kb.linuxvirtualserver.org/wiki/Weighted_Round-Robin_Scheduling 加权轮循调度是为了更好地处理不同处理能力的服务器。每个服务器都可以被分配一个权重,一个表示处理能力的整数值。权值较高的服务器比权值较低的服务器首先接收到新连接,权值较…

<Rust>egui学习之小部件(七):如何在窗口中添加颜色选择器colorpicker部件?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析,主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统:windows 平台:visual studio code 语言:rust 库:egui、eframe 概述 本文是本专栏的第七篇博…

c#中Task.Run 和使用 Task 构造函数创建任务的区别

Task.Run 和使用 Task 构造函数创建任务是两种不同的方法,它们在某些方面有显著的区别: 启动方式: Task.Run 是一个静态方法,它立即启动一个任务并在后台执行指定的工作。它通常用于快速启动一个简单的后台任务。使用 Task 构造函数创建任务&…

记一次学习--webshell绕过(利用清洗函数)

目录 样本 样本修改 样本 <?php $a array("t", "system"); shuffle($a); $a[0]($_POST[1]); 通过 shuffle 函数打乱数组,然后通过$a[0]取出第一个元素&#xff0c;打乱后第一个元素可能是t也可能是system。然后再进行POST传参进行命令执行。 这里抓…

Android14(U)文件扫描源码探究

1.MediaReceiver 扫描的功能集中在MediaProvider中&#xff0c;源码位置&#xff1a;packages/providers/MediaProvider 其中的packages/providers/MediaProvider/AndroidManifest.xml&#xff1a; <receiver android:name"com.android.providers.media.MediaReceive…

部署Rancher2.9管理K8S1.26集群

文章目录 一、实验须知1、Rancher简介2、当前实验环境 二、部署Rancher1、服务器初始化操作2、部署Rancher3、登入Rancher平台 三、Rancher对接K8S集群四、通过Rancher仪表盘部署Nginx服务1、创建命名空间2、创建Deployment3、创建Service 一、实验须知 1、Rancher简介 中文官…

【自由能系列(中级),代码模拟】预测编码的核心:三个关键方程式的详解

预测编码的核心&#xff1a;三个关键方程式的详解 ——探索预测编码背后的数学原理与应用 核心结论&#xff1a;预测编码是一种基于贝叶斯定理的理论框架&#xff0c;它通过三个关键方程式描述了大脑如何处理和解释来自环境的信号。这些方程式分别建立了贝叶斯定理的简化形式、…

JL-02 投入式水位记录仪 采集记录一体 安装便捷

产品概述 水位记录仪是针对市场需求而研发的集成了信号采集、过程IO控制和无线数据通信于一体的高性能测控装置&#xff1b;采用低功耗技术&#xff0c;可使用太阳能、蓄电池供电&#xff0c;非常适合在野外供电条件困难的恶劣环境使用&#xff1b;安装使用方便&#xff0c;不…

9月新机首发:骁龙芯片+超大电池,游戏玩家的终极选择

随着秋风送爽的9月到来&#xff0c;智能手机和电子设备市场也迎来了新一轮的热潮。8月份的新机发布热潮刚刚退去&#xff0c;9月份的新机已经迫不及待地揭开了神秘的面纱。在众多备受期待的产品中&#xff0c;红魔品牌抢先官宣&#xff0c;两款全新的游戏平板将在9月5日正式亮相…

论文速读|通过人类远程操作的深度模仿学习框架:人型机器人的行走操纵技能

项目地址&#xff1a;Deep Imitation Learning for Humanoid Loco-manipulation through Human Teleoperation 本文详细介绍了 TRILL&#xff08;Teleoperation and Imitation Learning for Loco-manipulation&#xff09;框架&#xff0c;它是一个用于人型机器人行走操纵技能训…

LeetCode - 12 整数转罗马数字

题目来源 12. 整数转罗马数字 - 力扣&#xff08;LeetCode&#xff09; 题目描述 七个不同的符号代表罗马数字&#xff0c;其值如下&#xff1a; 符号值I1V5X10L50C100D500M1000 罗马数字是通过添加从最高到最低的小数位值的转换而形成的。将小数位值转换为罗马数字有以下规…

OpenCV绘图函数(14)图像上绘制文字的函数putText()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在图像上绘制指定的文本字符串。 cv::putText 函数在图像上绘制指定的文本字符串。无法使用指定字体渲染的符号会被问号&#xff08;?&#xff…

git把远程仓库的master分支合并到本地分支

假如现在我们要将远程 origin 的 master 分支合并到本地的 dev 分支&#xff0c;可以按照以下步骤进行操作&#xff1a; 切换到本地的 dev 分支&#xff1a; git checkout dev拉取远程 origin 的最新 master 分支&#xff1a; git fetch origin master将远程 origin 的 master …

9 Python函数、参数、作用域、内置函数、lambda表达式

本篇是 Python 系列教程第 9 篇&#xff0c;更多内容敬请访问我的 Python 合集 1 定义函数 在 Python 中&#xff0c;你可以使用 def 关键字来定义一个函数。函数定义的基本语法如下&#xff1a; def function_name(parameters):# 函数体# ...return valuefunction_name: 函数…

简单梯形问题

如下图&#xff0c;ABCD是一个梯形&#xff0c;E是AD的中点&#xff0c;直线CE把梯形分成甲、乙两部分&#xff0c;其面积之比为5:2&#xff0c;那么上底AB与下底CD的长度之比是&#xff08;&#xff09;。 A 2&#xff1a;5 B 3&#xff1a;5 C 3&#xff1a;4【正确答案】 D …

【ros2】 const builtin_interfaces::msg::Time timestamp解析

解析 const builtin_interfaces::msg::Time & timestamp 1. 数据类型 builtin_interfaces::msg::Time 是 ROS 2 中的一个消息类型&#xff0c;用于表示时间戳。 2. 结构 builtin_interfaces::msg::Time 包含以下字段&#xff1a; struct Time {std::uint32_t sec;std:…

LLM:推理加速相关的结构优化

对于 LLM&#xff0c;加速推理并降低显存&#xff0c;是两个至关重要的问题。本文将从 Key-Value Cache 出发&#xff0c;介绍两种相关的模型结构改进。分别是 ChatGLM 系列使用的 Multi-Query Attention&#xff08;MQA&#xff09; 和 LLama 系列使用的 Grouped-Query Attent…

C++学习, 函数返回指针

C 允许函数返回指针&#xff0c;需要声明返回指针的函数。 声明函数返回指针方式&#xff1a; type *Function() { } 程序示例&#xff1a; #include <iostream> #include <ctime> #include <cstdlib> using namespace std; int *getRandom( ) { static…

Memcached append 命令

Memcached append 命令 Memcached 是一种高性能的分布式内存对象缓存系统,常用于缓存数据库调用、API响应等,以减少服务器负载和提高访问速度。Memcached 的 append 命令用于向已存在键的值的末尾追加数据。这个功能在需要在不覆盖原有数据的情况下,对数据进行扩展时非常有…