如何在CPP中以最快的方式对HTML访问日志进行分类

How to sort an html access log in fastest way in cpp

本文关键字:访问 HTML 日志 分类 方式 CPP      更新时间:2023-10-16

本地 - [24/OCT/1994:13:41:41 -0600]"获取index.html http/1.0" 200 150

本地 - [24/OCT/1994:13:41:41 -0600]"获取1.gif http/1.0" 200 1210

本地 - [24/OCT/1994:13:43:13 -0600]"获取index.html http/1.0" 200 3185

远程 - [24/OCT/1994:13:43:14 -0600]"获取2.GIF HTTP/1.0" 200 2555

本地 - [24/OCT/1994:13:43:13 -0600]"获取index.html http/1.0" 200 32618

如示例中,我有一个访问日志,其中包含大约700.000个文本格式日志。

"代表我们的HTML页面,第一个整数是我们的http答复代码,该代码将被忽略,第二个整数是回复,我们将使用来计算访问者号码。时间戳将被忽略。我们将为每个网站日志的总访问者编号排序。我应该使用哪种数据结构方法?我需要一些建议。

如果您只是想用URL计数访问者,则无需编写程序来执行此操作。

elb-logs, 515> wc -l /tmp/$$
874597 /tmp/4028
elb-logs, 516> time ( grep GET /tmp/$$ | sed -e 's/.*"GET //' | sed -e 's/ .*//' | sort | uniq -c | sort -n > /tmp/example )
real    0m11.185s
user    0m13.872s
sys 0m0.476s

为我提供了URL的计数,以获取请求。如果我想做类似URL的字节数之类的事情,我将使用awk

诚然,我用来执行此操作的笔记本电脑具有12 GB的RAM和一个SSD,因此会影响数字。但是,即使运行这样的命令管道需要一分钟的时间,它仍然比编写和调试C 程序所需的时间要少得多。