当前位置: 首页 > news >正文

一个强大的排序工具

有人want to sort a 20GB binary file that contains 30-byte key and 20 byte value placed in a contiguous manner,stackoverflow上的最高赞回答是hexdump, sort再xxd转回来〔链接〕。

有明白人指出这样需要越70G的临时文件。

在下也许有这个需求:bigram排序,比如 三亚<浮点数>,key固定为6字节(UTF-8),value固定为4或8字节,记录长度为10或12.

An efficient C++ multi-threaded sorting function〕这不还得自己写程序么,而且去测他的程序有无bug?

有个命令行工具bsort就好了啊。文件由定长的记录构成。-kb和-ke指定key的位置 [begin, end),-j指定线程数,mmap进内存,多线程分路排序后归并。

However,

  • 分路归并需要等大缓冲区。NVME大时代,mmap和就地排序都可以不要
  • 我手潮;我也不想测试我的程序

GNU sort - sort lines of text files

  • --parallel=N change the number of sorts run concurrently to N
  • -t, --field-separator=SEP use SEP instead of non-blank to blank transition
  • -k, --key=KEYDEF sort via a key; KEYDEF gives location and type

它是以line为记录的。存 三亚:-1.2或者三亚:783412FF?不好。

apt source coreutils; configure; make 刷刷地出来了。

在src/sort.c里:

/* Fill BUF reading from FP, moving buf->left bytes from the endof buf->buf to the beginning first.  If EOF is reached and thefile wasn't terminated by a newline, supply one.  Set up BUF's line                                                  table too.  FILE is the name of the file corresponding to FP.    Return true if some input was read.  */static bool                                                                                                             
fillbuf (struct buffer *buf, FILE *fp, char const *file)

可惜不能fgets换fread. 

如果能把这个函数改对,我觉得后面的代码是久经考验的。

如果改坏了,我想小数据即可暴露出错误。

http://www.jsqmd.com/news/37792/

相关文章:

  • 数据采集_2
  • chatTTS源码版本地部署踩的坑
  • 第一讲机器学习基础
  • Linux服务器编程实践20-TCP服务 vs UDP服务:核心差异对比 - 详解
  • 第二十八天
  • 当世人 逐渐将英雄遗忘 我最终展露了疯狂 与烧灼许久的欲望 已无人描绘 我的画像
  • 关于IP、TCP、UDP的校验和计算
  • 元叙事提示注入:突破AI安全边界的攻击技术
  • 【计算机网络表格图表解析】网络体系结构、资料链路层、网络层、传输层、应用层、网络安全、故障排查
  • PWM妙用:解锁LED亮度调节与呼吸灯的LuatOS开发之旅
  • python项目跟练 外星人入侵 01 3个位置
  • ONES 重磅升级|全新内核,深度可配置,适配复杂业务流
  • 类的继承
  • CUDA安装注意事项
  • 豆包Seed-Coder编程能力小试
  • 数据类型 标识符 键盘录入
  • 102302145 黄加鸿 数据采集与融合技术作业2
  • 2025-11-11 早报新闻
  • 详细介绍:Spring Boot
  • echarts获取坐标上的点距离顶部底部高度
  • K8S(九)—— Kubernetes持久化存储深度解析:从Volume到PV/PVC与StorageClass动态存储 - 教程
  • JAVA 随机函数
  • GPIO 也是一个接口,还有 QEMU GPIODEV 和 GUSE - 指南
  • Air780EPM系列低功耗模组USB设计进阶:硬件要点与LuatOS API开发赋能
  • 如何项目管理软件中计算预算?
  • Kimi会员双11砍价成功!0.99元首月链接分享
  • 实用指南:【Qt】9.信号和槽_信号和槽存在的意义
  • DI依赖注入
  • 解码LVGL定时器
  • ORACLE解析游标生成JSON