Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 7379|回复: 11

[活动] 【社区新年活动】比试数据检索效率

[复制链接]

该用户从未签到

发表于 2014-1-15 13:31:31 | 显示全部楼层 |阅读模式
1、示例数据表Table(数据转换不计时)
    Index   Field1  Field2  Field3  Field4   ...  Field1800
      1       0       1       0       1      ...    0
      2       1       0       0       0      ...    1
      3       1       0       1       0      ...    0
     ...........................................    0
   1000000    1       1       1       0      ...    1

   其中,Index为数字编号,自增,无跳开。Field共1800个,值必然为1或0中的一种。
   数据记录共100万条
   Field为0或1有概率,概率为99.5% - (((Field N-1) mod 6) * 15),即为1的概率在99.5%-24.5%之间。
   即  Field1(99.5%) Field2(84.5%) Field3(69.5%) Field4(54.5%) Field5(39.5%) Field6(24.5%)...
       Field7(99.5%) Field8(84.5%) Field9(69.5%) Field10(54.5%) Field11(39.5%) Field12(24.5%)

     注:概率现在是临时数字,用于提供优化空间,真正评比时会变。

2、查询时,查询条件的Field以每6个为1组随机产生中间的一个,随机选中概率同上,共产生300个(随机字段选择不计时),查询条件必然为1

3、示例查询(SQL表达)(计时项)
    SELECT COUNT(*) FROM Table WHERE (Field1=1) AND (Field8=1) AND (Field17=1) AND... AND (FieldN=1)
    注:查询条件必然为1
==============================================================
不限定条件:
    数据组织结构生成/转换/加载 不计时
    随机字段生成 不计时
    结果打印不计时,只要正确计数结果在内存中即可

限定条件:
    运算资源:单核2.0G-2.5G左右
    内存:<6G
    必须返回正确结果

程序必须支持的功能:
    加载数据源文件data.txt(测试记录数据Table,格式如1)

    加载检索字段文件field.txt,该文件内有多行,每一行表示所指定的字段号,最小1,最大1800。
        例如:1 8 17 ....共300个。
        每一行为一组查询条件,即为一次查找,计算COUNT并输出到屏幕。

    输出整体检索耗时

奖池:
猫工捐100.00,
纯2捐100.00,
ALGO捐100.00,
yuyu土豪捐100.00,
德国慕尼黑捐100.00,
梦断难寻捐100.00,
Cobbler捐100.00
东兰捐助1块硬币,
无证捐助3QB,
如歌捐助32QB,
飘飘的风捐助一套欧元硬币
。。。
第一名将获得奖池奖金
目前奖池700.00RMB,35QB,1.00RMB硬币,一套欧元硬币
所有提交有效代码或捐赠金额>=100.00RMB的同学可以共享得到所有人的代码

时间小于3ms,可以得到给ALGO发简历的机会。

运算代码推荐使用lazarus,使用其它语言亦可。
运算代码请发送到邮箱:13210802@qq.com,并请在邮件中附上您的姓名或网名、联系方式
测试统一由ALGO进行测试,并发布所有结果

更新比赛说明:

更新源数据生成程序(附源码)如下:


欲知详情,请加入到QQ群了解:34176611
活动最新动态我们也将在本贴持续更新

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册(注册审核可向QQ群索取)

x
回复

使用道具 举报

该用户从未签到

发表于 2014-1-15 14:40:59 | 显示全部楼层

回帖奖励 +1 RMB金钱

群里有人说,没人来抢沙发,那我只好抢个,叫大家看看。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-1-15 16:10:27 | 显示全部楼层
只能板凳了吗~~
看看有多少人才~~
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-1-16 08:00:54 | 显示全部楼层
本帖最后由 fireyu 于 2014-1-16 08:07 编辑

100万条记录,如果记录是固定的,先全取出来放内存里,数据结构可以用二叉树。然后二叉树查找,才100万记录,CPU查找只要运算30次。应该不会超过1ms。
看着满有趣的,我写写看。

不对,还有个300/2000
C 300 /2000,这个组合弄出来比较麻烦。得再想下。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-1-16 17:01:53 | 显示全部楼层
300个字段查询条件固定的话,确实是2叉树,但如果要求忽略其中某些条件.
比如 300个条件,然后+100可选字段,这个难题就不是二叉树可以解决的了.
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-1-16 18:01:23 | 显示全部楼层
本帖最后由 aaa 于 2014-1-20 16:22 编辑

支持!!!!
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-1-16 18:03:20 | 显示全部楼层
你什么及其哦
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-1-16 18:07:23 | 显示全部楼层
700块不要白不要,怎么没人来啊?
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-1-17 16:29:33 | 显示全部楼层
不太明白,学习吧
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2014-1-21 10:11:17 | 显示全部楼层
原贴内容有部分出入,已经更新:

有100万记录,每个记录有1800个bool条件,6个一组随机,共300个条件查询,并获得记录的编号。
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2024-10-11 04:57 , Processed in 0.043327 second(s), 11 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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