全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

IP归属甄别会员请立即修改密码
查看: 960|回复: 9
打印 上一主题 下一主题

抛砖引玉个无聊的东西,搜索数字在圆周率前10亿位的位置

[复制链接]
跳转到指定楼层
1#
发表于 2022-2-20 20:52:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
wget https://zxd.coding.net/p/pi/d/pi/git/raw/master/pi.tar.gz

tar zxvf pi.tar.gz

得到pi.txt

wget https://zxd.coding.net/p/pi/d/pi/git/raw/master/pi.php

把pi.txt和上面这个php文件放一起,参数就一个s,s是需要查询的数字

不怎么懂代码,所以写的很烂,但是能用

目前主要有这样的问题,这个txt大概950m,并且都在一行里面,php检索起来很慢

用我那个代码的话,遍历大概要5秒钟,但是不怎么耗内存

有没有大佬能优化下,通过数据库或者什么算法,让搜索更快点

还有就是有没有办法和公众号配合,实现在公众号里面查询


表妹 该用户已被删除
2#
发表于 2022-2-20 20:54:33 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
3#
发表于 2022-2-20 21:03:10 | 只看该作者
可以试试用4个数字来建索引:
0000 => 所有0000开头的数字位置
0001 => 所有0001开头的数字位置
...
9999 => 所有9999开头的数字位置

也可以试试用3个或5个数字建索引,比较下哪种方式更节省CPU和内存。
4#
发表于 2022-2-20 21:06:32 | 只看该作者
1. 读入内存长驻
2. 自己用C写搜索,算法课本里有的
3. 进程间通讯
5#
发表于 2022-2-20 21:13:32 | 只看该作者
本帖最后由 davidsky2012 于 2022-2-20 21:27 编辑
sdqu 发表于 2022-2-20 21:06
1. 读入内存长驻
2. 自己用C写搜索,算法课本里有的
3. 进程间通讯


C语言字符串搜索函数自带kmp等高效算法吧,不用自己实现。

感觉楼主并不想把900多M一起读入内存。
6#
发表于 2022-2-20 21:18:55 | 只看该作者
davidsky2012 发表于 2022-2-20 21:13
C语言字符串搜索函数自带kms等高效算法吧,不用自己实现。

感觉楼主并不想把900多M一起读入内存。 ...

道理上确实是的,不过实际使用中,c的字符串搜索,比如strstr并不高效,映象中有替代的string库更高效一些。自己按照算法写,最好是内嵌汇编来得最快。这个我以前做项目时遇到过。
楼主是用纯php写,这个肯定不能读进内存了,每次读文件,效率肯定不行的。用数据库等辅助另议。
因为楼主标题也说了是无聊讨论算法嘛,所以我按照最高效的方法来说了,没局限在他的那个php代码了。
7#
发表于 2022-2-21 08:53:35 | 只看该作者
3.1415926.xyz   路过



/**
* MJJ命运啊,说是注定,不如说是你忘了是在何时做了选择。——《塔希里亚故事集》
*
* 森林鸟 forestbird Link https://bird.work
*/
8#
发表于 2022-2-21 09:00:46 来自手机 | 只看该作者
破刀 发表于 2022-2-21 08:53
3.1415926.xyz   路过



300CNY收了一个3.1415926.xyz

+1

点评

你乍知道呢 ,原来是IP+1了。。  发表于 2022-2-21 09:02
9#
 楼主| 发表于 2022-2-21 11:30:50 | 只看该作者
zxxx 发表于 2022-2-21 09:00
300CNY收了一个3.1415926.xyz

+1

好域名
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-11-9 00:02 , Processed in 0.093786 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表