SPL性能提升-单键值查找

2024-01-06 00:30
文章标签 性能 查找 提升 spl 单键

本文主要是介绍SPL性能提升-单键值查找,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.介绍

集算器是一款程序化数据运算工具,它能够执行各类数据分析与结构化计算,也可以自由访问数据库,完成在线数据分析。
在这里插入图片描述
支持各种数据源混合查询,离散与集合的充分结合,超强有序计算,提倡分步计算

官网:http://www.scudata.com.cn/

二.准备

1.下载学习资源:http://www.raqsoft.com.cn/wx/course-performance-optimizing.html

2.安装完毕打开集算器,设置seek为主目录
在这里插入图片描述
3.切换到主目录

在这里插入图片描述

4.执行脚本
在这里插入图片描述
1、“主目录\dfx\orders.dfx”,生成订单集文件"主目录\data\btx\orders.btx"。
2、“主目录\dfx\residents.dfx”,生成居民集文件"主目录\data\btx\residents.btx"
3、“主目录\dfx\fulltext.dfx”,生成全文检索组文件"主目录\data\ctx\fulltext.ctx"“。
4、“主目录\dfx\keyvalues.dfx”,生成键值组文件"主目录\data\ctx\col.ctx”"。

三.内存-单键值查找

一.准备数据

执行p1.1.dfx,生成一百万数据量的客户序表customer,并随机取出1000个id、name
在这里插入图片描述

二.内存-二分法

在这里插入图片描述
1.打开p1.2.dfx,用顺序查找,记录执行时间
在这里插入图片描述
2.打开p1.2.dfx,用二分法改写,记录执行时间
在这里插入图片描述
注意:二分法找name是不行的,二分法查找的必须是有序的集合

=customer.select@b(name= ="Luke")

三.序号定位

在这里插入图片描述
在这里插入图片描述
1.打开p1.3.dfx,用序号定位法改写,比较执行时间
在这里插入图片描述
注意:基于无序集合理论的关系数据库,没有提供序号定位的手段,即使可以用序号定位时也只能用主键查找

四.哈希索引

在这里插入图片描述
索引越长,产生哈希冲突的概率越小,查找速度越快,但占用内存越大

索引长度缺省:原序列长度和2000万的较小值。当users表长度为100万的时候,索引长度缺省就是100万,哈希值重复的情况就很少了。

1.打开p1.4.dfx,用哈希索引改写
在这里插入图片描述
我们的数据是100w,所以索引缺省值是100w,冲突率小,查询快

2.将A2的index()改为index(10000),强行修改索引缺省值
在这里插入图片描述
可以看到缺省值小了,哈希冲突概率增大,查询效率变低

四.位置索引

在这里插入图片描述
1.打开p1.5.dfx-文件,观察遍历查找的写法,记录执行时间
在这里插入图片描述
2.改写为位置索引法查找
在这里插入图片描述

五.多层序号查找

在这里插入图片描述
在这里插入图片描述
1.打开p1.6.dfx,居民表residents取出十万条数据,idcards随机取出100个idcard身份证号
在这里插入图片描述
2.身份证号前十四位转换为排号键代码如下,补全剩下的三位转换代码
在这里插入图片描述

六.多层序号与限制长度哈希索引对比

1.打开p1.8.dfx,利用长度1000的哈希索引查找10000次
在这里插入图片描述
2.改写p1.8.dfx,将residents主键改为idcardk,哈希索引改为排号键索引
在这里插入图片描述

四.外存-单键值查找

一.外存-二分法

在这里插入图片描述
在这里插入图片描述
1.打开p1.9.dfx,用遍历法查找oid==8123456,记录执行时间
在这里插入图片描述
2.利用二分法(外存)改写p1.9.dfx,比较性能
在这里插入图片描述

二.外存-排序索引

在这里插入图片描述
在这里插入图片描述
1.打开p1.10.dfx,无索引查找1000个随机的订单编号,记录执行时间
在这里插入图片描述
2.改写p1.10.dfx,使用排序索引查找,比较性能,查看产生的索引文件
在这里插入图片描述
在seek\data\ctx目录中发现订单索引文件
在这里插入图片描述

三.外存-哈希索引

在这里插入图片描述
1.打开p1.11.dfx,用遍历法查找1000个随机的订单编号,记录执行时间
在这里插入图片描述
2.改写p1.11.dfx,使用哈希索引查找,比较性能
在这里插入图片描述
在这里插入图片描述
保证生成的索引文件名称不能重复,平均索引长度为1最合适,冲突最小

这篇关于SPL性能提升-单键值查找的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/574640

相关文章

C++作用域和标识符查找规则详解

《C++作用域和标识符查找规则详解》在C++中,作用域(Scope)和标识符查找(IdentifierLookup)是理解代码行为的重要概念,本文将详细介绍这些规则,并通过实例来说明它们的工作原理,需... 目录作用域标识符查找规则1. 普通查找(Ordinary Lookup)2. 限定查找(Qualif

JVisualVM之Java性能监控与调优利器详解

《JVisualVM之Java性能监控与调优利器详解》本文将详细介绍JVisualVM的使用方法,并结合实际案例展示如何利用它进行性能调优,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1. JVisualVM简介2. JVisualVM的安装与启动2.1 启动JVisualVM2

Java使用MethodHandle来替代反射,提高性能问题

《Java使用MethodHandle来替代反射,提高性能问题》:本文主要介绍Java使用MethodHandle来替代反射,提高性能问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录一、认识MethodHandle1、简介2、使用方式3、与反射的区别二、示例1、基本使用2、(重要)

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

C#实现查找并删除PDF中的空白页面

《C#实现查找并删除PDF中的空白页面》PDF文件中的空白页并不少见,因为它们有可能是作者有意留下的,也有可能是在处理文档时不小心添加的,下面我们来看看如何使用Spire.PDFfor.NET通过C#... 目录安装 Spire.PDF for .NETC# 查找并删除 PDF 文档中的空白页C# 添加与删

Java的"伪泛型"变"真泛型"后对性能的影响

《Java的伪泛型变真泛型后对性能的影响》泛型擦除本质上就是擦除与泛型相关的一切信息,例如参数化类型、类型变量等,Javac还将在需要时进行类型检查及强制类型转换,甚至在必要时会合成桥方法,这篇文章主... 目录1、真假泛型2、性能影响泛型存在于Java源代码中,在编译为字节码文件之前都会进行泛型擦除(ty

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Golang中拼接字符串的6种方式性能对比

《Golang中拼接字符串的6种方式性能对比》golang的string类型是不可修改的,对于拼接字符串来说,本质上还是创建一个新的对象将数据放进去,主要有6种拼接方式,下面小编就来为大家详细讲讲吧... 目录拼接方式介绍性能对比测试代码测试结果源码分析golang的string类型是不可修改的,对于拼接字