免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: unicorns
打印 上一主题 下一主题

大家给我支支招怎样才能提高性能 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-08-03 11:54 |只看该作者

大家给我支支招怎样才能提高性能

原帖由 "mengwg" 发表:
1、关于队列的同步我觉得方法不是很好。
while(1){
   Queue.Lock() ;
   if (Queue.IsEmpty()){
      Queue.Unlock() ;      
      usleep(1) ;
      continue ;      
   }
   pData = Queue.Remo..........
   

你的意思是把usleep去掉
我也知道这个不准,误差比较大
但是如果去掉的话,取队列的几个线程都在轮询队列,会不会LOCK的太频繁了     

你提到的阻塞式读取是针对队列来说的吗

论坛徽章:
0
12 [报告]
发表于 2003-08-03 12:44 |只看该作者

大家给我支支招怎样才能提高性能

不能让客户端直接连数据库吗?为什么要在中间加一块?     赞成大菠萝

论坛徽章:
0
13 [报告]
发表于 2003-08-03 13:15 |只看该作者

大家给我支支招怎样才能提高性能

原帖由 "大菠萝" 发表:


你用的是什么数据库?
我觉得你这样做,可能没有必要,可以在数据库中直接将数据表放入内存中,用位图索引,速度很快的,且这样做了,数据库能控制并发访问的,你可以试验一下,看能不能达到你的要求.在oracle中,将表放?.........
   

查询线程的效率是否是最高的,建议你比较一下HASH表和直接访问数据库这两种方式

论坛徽章:
0
14 [报告]
发表于 2003-08-03 14:33 |只看该作者

大家给我支支招怎样才能提高性能

对数据库没作任何优化的话当然是你人为的hash要高得多。
不过数据库有索引,并且有很多索引类型(postgresql就包括hash)。并且能够对经常触发的查询作出优化。如果建立索引并常对数据库作analyze,效率就完全是两回事了,我想这些数据库本身的功能你自己再写一个程式来完成是否有点儿多余?

论坛徽章:
0
15 [报告]
发表于 2003-08-03 15:38 |只看该作者

大家给我支支招怎样才能提高性能

原帖由 "夜未眠" 发表:
对数据库没作任何优化的话当然是你人为的hash要高得多。
不过数据库有索引,并且有很多索引类型(postgresql就包括hash)。并且能够对经常触发的查询作出优化。如果建立索引并常对数据库作analyze,效率就完全是两回事..........
   

具体需求具体分析嘛
做这个东西主要是在客户和数据库间建一个简单协议。
这样以后整个系统中的所有客户端都使用这个简单协议与这个程序通信
这样做的好处是以后如果数据库有所变动,只需要改这里而不需要去修改各个客户端。

至于查询速度,愚认为没有比我的HASH更快的了
因为我的HASH开了很大的内存,是不惜内存的换取速度(其实也没用多少)
机器有1g的内存,我最多用个200M了不起了。HASHKEY使用的是记录的ID,
散列就是简单求余,因为ID是连续的,所以基本没有冲突(当然闲置空间很多
但每个闲置空间也就是4个字节一个指针,加起来也没多少)。我查找起来就是一次求余操作就可以了。什么样的索引和优化可以比这样的HASH更快?

请大家关注于我提出的问题,其他方面由于具体需求的不同所产生的分歧就放在一边吧。谢谢

论坛徽章:
0
16 [报告]
发表于 2003-08-03 15:56 |只看该作者

大家给我支支招怎样才能提高性能

1.每个客户端的连接数
2.是长连接还是短连接
3.是同步还是异步
原帖由 "unicorns" 发表:
大概是这样一个需求,通过TCP与CLIET建立一个连接
然后从CLIET读入请求,然后经过查询,最后将结果传回CLIET
我用pthread做的,目前的结构就是下面的图。
现在是将数据库的表全部读入到内存中的三张HASH表里,所?.........

论坛徽章:
0
17 [报告]
发表于 2003-08-04 08:39 |只看该作者

大家给我支支招怎样才能提高性能

请问您的速度达到多少次了?
我的问题与您类似;
只是我没有自己hash
直接做数据库操作的

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
18 [报告]
发表于 2003-08-04 10:30 |只看该作者

大家给我支支招怎样才能提高性能

不知道你这三类线程的比例如何安排的?

queue lock的怎么一个实现方式?

另外gcc有个-p参数,可以产生跟踪执行的数据。可以用prof工具分析。你可以试试看

论坛徽章:
0
19 [报告]
发表于 2003-08-04 14:41 |只看该作者

大家给我支支招怎样才能提高性能

原帖由 "snowpy" 发表:
1.每个客户端的连接数
2.是长连接还是短连接
3.是同步还是异步
   

1,目前是单个客户端的测试,每个客户端一个连接
2,长连接
3,异步。

论坛徽章:
0
20 [报告]
发表于 2003-08-04 14:42 |只看该作者

大家给我支支招怎样才能提高性能

原帖由 "deathbravo" 发表:
请问您的速度达到多少次了?
我的问题与您类似;
只是我没有自己hash
直接做数据库操作的
   

发帖子的时候是每秒130到140的样子
现在把测试的客户端的程序改了一下,目前是每秒330的样子。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP