SAS HashTable 中由 hashexp 指定的表大小到底是多少?

2024-01-29

我想对 SAS 哈希表中存储桶的定义进行一些澄清。问题正是关于hashexp范围。

根据 SAS DOC 的说法,hashexp is:

哈希对象的内表大小,其中哈希表的大小为2n。

HASHEXP 的值用作 2 的指数来创建哈希表大小。例如,HASHEXP 的值为 4 相当于哈希表大小为 24 或 16。HASHEXP 的最大值为 20。

哈希表的大小不等于可以存储的项数。将哈希表想象为“桶”数组。哈希表大小为 16 将有 16 个“桶”。每个桶可以容纳无限数量的物品。哈希表的效率在于哈希函数将项目映射到桶以及从桶中检索项目的能力。

您应该根据哈希对象中的数据量设置哈希表大小,以便最大限度地提高哈希对象查找例程的效率。尝试不同的 HASHEXP 值,直到获得最佳结果。例如,如果哈希对象包含一百万个项目,则哈希表大小为 16 (HASHEXP = 4) 可以工作,但效率不高。哈希表大小为 512 或 1024(HASHEXP = 9 或 10)将获得最佳性能。

问题是到底是什么哈希表大小,而它不是哈希对象中的数据量?

是否应该理解为我们想要分配尽可能多的内存,但不能少,不能多。要让事情快速运转,需要二的力量。但它并不限制可能使用的数据量,它仅表明将使用多少数据,对吗?


Paul Dorfman(哈希大师)在本白皮书第 10 页上进行了相当详细的介绍:

http://www2.sas.com/proceedings/forum2008/037-2008.pdf http://www2.sas.com/proceedings/forum2008/037-2008.pdf

据我了解,哈希表将数据存储在二叉树中。 hashexp 创建的每个桶代表将用于存储数据的二叉树的数量。 0 的 hashexp 将使用单个树,而 8 的 hashexp 将使用 256 棵树。当对哈希对象执行查找时,内部算法会确定键应存在于哪棵树中(基于哈希值)。然后它检查该树的值。例如,通过自动知道要查看 256 棵树中的哪一棵,与单个二叉树相比,它可以节省 8 次比较 (2^8)。

整个事情看起来比这复杂得多,但这就是我对为什么它运行得更快的解释。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SAS HashTable 中由 hashexp 指定的表大小到底是多少? 的相关文章

  • 哈希表中关键内容的最佳实践

    最好的查找结构是HashTable 它提供持续的访问一般 最坏情况下呈线性 这取决于哈希函数 好的 我的问题如下 假设一个良好的实施HashTable e g HashMap关于映射中传递的键是否有最佳实践 我的意思是建议键必须是不可变的对
  • sas中的分组依据

    我有以下数据集作为输入 ID 1 2 2 3 4 4 4 5 并需要一个新的数据集 如下所示 ID count of ID 1 1 2 2 3 1 4 3 5 1 您能告诉我如何在 SAS 中执行此操作而不使用 PROC SQL 吗 或者
  • XPT 到 CSV 的转换? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 也许这是错误的地方 但我不太确定该把它放在哪里 我有一个非常大的 XPT 格式的压缩 SAS 文件 我
  • 增加 sas 内存/memsize

    您好 有一个包含大约 6000 个观测值和 250 个变量的数据集 我正在尝试使用 proc mix 在 sas 中运行混合模型 但我不断收到 错误 由于内存不足 sas 系统停止处理此步骤 我尝试了康奈尔大学的方法 http www ci
  • 哈希表和键顺序

    有没有办法在添加键时保持哈希表中键的顺序 就像推 弹出机制一样 Example hashtable hashtable Add Switzerland Bern hashtable Add Spain Madrid hashtable Ad
  • 哈希表真的可以是 O(1) 吗?

    哈希表可以实现 O 1 似乎是常识 但这对我来说从来没有意义 有人可以解释一下吗 我想到了以下两种情况 A 该值是一个小于哈希表大小的 int 因此 该值是它自己的哈希值 因此不存在哈希表 但即使有 也会是 O 1 并且效率仍然很低 B 您
  • XML 映射的 PATH 元素中的 POSITION() 函数在 XML 映射器中有效,但在 SAS 代码中无效

    我正在尝试将 xml 文件导入到 SAS Xml 文件是 Google 对地址请求的 地理响应 这是它的片段
  • Java 哈希表与对象引用的问题

    我有一个哈希表 例如 HashTable ht 1 1 2 1 3 1 现在 我像 Integer foo Integer 1 一样实现它 并像这样声明哈希表 HashTable ht foo foo 2 foo 3 foo 现在 据我了解
  • SAS Do 循环:在循环内使用循环变量来创建滞后变量

    我想创建包含给定变量的滞后值的变量 以实现大量滞后 我怎么能这样做呢 我尝试以下操作 data out set in do i 1 to 50 let j i lag j Lag j x end run 如何获取循环变量i进入宏变量j或者如
  • SAS 全球日期比较

    我正在尝试进行日期比较 但没有得到正确的结果 有谁知道发生了什么事吗 macro ttt let check start 28APR2014 if check start d lt 25may2014 d then let true 1 e
  • 如何读取从 Access 导入的 SAS 数据集(不符合 SAS 命名约定)

    我已使用 Libname 将 Access DB 导入 SAS 库名称 accdb c mydata base accdb DB 中的所有表现在都在 accdb 库中 但 Access DB 中的表名称与 SAS 数据集命名约定不匹配 我的
  • 使用 SAS EG 通过代理从 API 下载 JSON 文件

    我正在尝试使用瑞士当局提供的 API 对公司网络内的地址进行地理编码 我的公司使用带有用户名和密码的代理服务器 我是 SAS EG 的新手 这是我迄今为止拥有的代码 我必须匿名一些内容才能被允许在此处发布 filename response
  • 为什么 .Net 词典中的条目是按加法顺序排列的?

    我刚刚看到这种行为 我对此感到有点惊讶 如果我向字典中添加 3 或 4 个元素 然后执行 For Each 来获取所有键 它们将以我添加的顺序出现 这让我感到惊讶的原因是字典内部应该是一个哈希表 所以我希望事情能以任何顺序出现 按键的哈希排
  • 使用 SAS 导出到 Excel

    假设我有 2 个 SAS 数据集 test1 sas 和 Test2 sas 现在我想将这2个数据集导出到Excel中 其中Excel文件Sheet1中将有test1 sas数据 Sheet2中将有test2 sas数据 怎么做 从 开始这
  • 在从一个表中提取的循环内调用执行以执行宏

    我目前有以下情况 macro sqlloop event id lots of code mostly proc sql segments mend 生成一个输出表 名为export table2 我需要能够为另一个表 名为 vars 中的
  • 将 GMT 日期时间转换为本地日期时间

    我有一个 GMT 时区的日期时间值 如何将其转换为我当地的时区 我希望有一个功能可以实现这一点 请注意 由于是夏季 我不能只添加或减去差异 例如 该函数可以这样工作 data null gmtdatetime 17SEP14 09 42 1
  • Office 2010 中的 SAS DDE 问题

    当我运行 Office 2007 时 我的 SAS DDE 脚本可以很好地填充 保存并关闭 Excel 文件 我最近更新到 Office 2010 总体工作正常 但 Excel 在保存对话框中停止 我必须手动单击 保存 而以前我不需要这样做
  • SAS 随机采样

    在 SAS 中 我创建了一个程序 该程序将从数据集中随机获取 50 个观测值 并计算观测值的平均值 data subset drop i samplesize samplesize 50 obsleft totobs do i 1 to s
  • 为什么 Hashtable 不允许空键或空值?

    正如 JDK 文档中所指定的 Hashtable 不允许空键或空值 HashMap 允许一个空键和任意数量的空值 为什么是这样 Hashtable 是较旧的类 通常不鼓励使用它 也许他们看到了对 null 键的需要 更重要的是 null 值
  • 如果出现错误,SAS 会发送电子邮件

    是否有任何代码 宏可以合并到我的 SAS 程序中 一旦我的 SAS 代码在运行时发生错误 它就会向我发送电子邮件 另外 这封电子邮件是否可能包含所发生的错误 是的 又不是 这是可能的 但没有好的方法来做到这一点 您必须在每个过程之后检查是否

随机推荐

  • 验证日期模式

    我需要一个 javascript 方法来验证日期模式 如下所示 2012 年 1 月 14 日 到目前为止 我不确定该模式使用哪个正则表达式 因为它不是标准日期 例如 14 01 2012 或 01 14 2012 或 01 04 2012
  • 为什么 jqueryUI datepicker 会抛出错误?

    我正在尝试 jqueryUI 但 firebug 在该脚本上捕获以下错误 function date datepicker 萤火虫错误如下 date datepicker is not a function 在我的 html 上 日期 id
  • 启发式和元启发式有什么区别?

    经过对算法的一些研究后 我发现了两个令我困惑的术语 我读过至少 20 篇论文 但都没有任何明确的定义 我希望有人能帮助我区分启发式算法和元启发式算法之间的区别 如果可能的话 添加它的来源 ps 我已经知道这些词的含义 但我不知道它们在计算机
  • 如何将旋转器数据从一个活动传递到另一个活动?

    此代码不会从微调器读取值 它始终只读取第一个值 btnResult setOnClickListener new View OnClickListener final String USN spnConversions getSelecte
  • 在 Visual Studio 中设置 FILE_ATTRIBUTE_DEVICE

    我想知道是否可以在 Visual C 中调用 CreateFile 函数来创建属性为 FILE ATTRIBUTE DEVICE 0x00000040 十六进制 64 十进制 的文件 根据 MSDN API FILE ATTRIBUTE D
  • Laravel 4 - 使用 hasMany 关系时插入多条记录

    仍在适应 Laravel 4 我有点不确定为什么这不起作用 在 L3 中 我能够将多条记录插入到表中 如下所示 comments array array message gt A new comment array message gt A
  • 依赖项规范必须是字符串或映射

    pubspec yaml 第 32 行第 5 列出错 依赖项规范必须是字符串或映射 32 assets 33 酒吧失败 65 问题是我的资产文件夹位于错误的位置 它不应该处于依赖关系下 另外 assets 前必须加2个空格 如图
  • Swift 中的属性和变量有什​​么区别?

    从一些最初的教程中 我看到属性属于一个类 本质上是 C 世界中使用的 全局变量 几年前编码 我还认为变量更多的是仅在方法中使用 存储信息的 本地 实体 然后我看到了 Quora 的这个帖子 https www quora com Apple
  • Java win32 库/api

    是否有合适的 Java win32 库 例如 显示当前进程 查找进程占用的端口号等 或者像 WMI 库之类的东西 看一下JNA https github com twall jna 这是与本机代码通信的 100 纯 java 方式 他们有一
  • 如何抑制 Delphi DataSnap 错误消息对话框?

    我们在 Windows 2003 Server 上运行 DataSnap Delphi 2009 应用程序 DataSnap 客户端和服务器位于同一台计算机上 通过 Borland Socketserver 使用 DCOM 客户端运行后台批
  • 为什么将 Avro 与 Kafka 结合使用 - 如何处理 POJO

    我有一个 Spring 应用程序 它是我的 kafka 生产者 我想知道为什么 avro 是最好的选择 我读到了它以及它提供的所有内容 但为什么我不能序列化我用 jackson 自己创建的 POJO 并将其发送到 kafka 我这样说是因为
  • Amazon MWS Feed API 更新订单状态时出现问题

    我正在使用 amazon mws feed api 来更新我网站上的订单状态 当我打电话给提交供稿api 提交成功 但是 当我打电话给获取Feed提交结果 它返回给我一个错误 指出
  • 使用 UITextView 和 NSMutableAttributedString 对齐文本

    我正在尝试为一个合理的文本UITextView with NSMutableAttributedString the NSMutableAttributedString是由不同的NSAttributedString因为我需要粗体和常规字体
  • 什么是 Chocolatey“安装”包?

    关于审查巧克力包装 https chocolatey org packages可用时 我遇到了一些有两个 或有时更多 显然用于同一产品的软件包 乍一看无法区分 例如 有自动热键包 然后还有一个自动热键 install 在这里查看 Choco
  • 为什么 JavaScript 中 (([]===[])+/-/)[1] = 'a' 和 (1+{})[(1<<1)+1] = 'b' ?

    最近我发现了一个有趣的网站 其中展示了 Javascript 混淆器 http bl ocks org jasonsperske 5400283 http bl ocks org jasonsperske 5400283 例如 1 give
  • 为什么从文件中读取 1 个字节比读取 2、3、4、... 字节慢 20 倍?

    我一直试图理解之间的权衡read and seek 对于小的 跳跃 读取不需要的数据比使用跳过它更快seek 在计时不同的读取 查找块大小以找到临界点时 我遇到了一个奇怪的现象 read 1 大约慢20倍read 2 read 3 等 对于
  • 更改表设置标识列

    我有一个 sybase 表 测试 其中包含以下列 MyIdentity numberic 9 0 Name User 桌子上写满了很多记录 我想将身份列更改为身份 当前表中的 MyIdentity 没有重复值 我如何更改表并将 MyIden
  • TensorFlow:训练for循环中的每次迭代速度较慢[重复]

    这个问题在这里已经有答案了 我正在 TensorFlow 中训练一个标准的 简单的多层感知器 ANN 它具有三个隐藏层 我添加了一个文本进度条 这样我就可以观察迭代各个纪元的进度 我发现每次迭代的处理时间在前几个时期之后会增加 这是一个示例
  • 在过滤器 SQLAlchemy 中进行日期时间比较

    我对 SQLAlchemy 中的过滤有点困惑 我目前正在尝试过滤掉超过 10 周的条目 所以我有 current time datetime datetime utcnow potential session query Subject f
  • SAS HashTable 中由 hashexp 指定的表大小到底是多少?

    我想对 SAS 哈希表中存储桶的定义进行一些澄清 问题正是关于hashexp范围 根据 SAS DOC 的说法 hashexp is 哈希对象的内表大小 其中哈希表的大小为2n HASHEXP 的值用作 2 的指数来创建哈希表大小 例如 H