免费注册 查看新帖 |

Chinaunix

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

unix多进程使用shell sort排序文件的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-01-09 22:54 |只看该作者

unix多进程使用shell sort排序文件的问题

那解决这样的问题

要自己编程写排序吗?和sort命令比如何?

另外,sort命令什么算法排的?

论坛徽章:
62
2016科比退役纪念章
日期:2016-06-28 17:45:06奥兰多魔术
日期:2015-05-04 22:47:40菠菜神灯
日期:2015-05-04 22:35:07菠菜神灯
日期:2015-05-04 22:35:02NBA季后赛大富翁
日期:2015-05-04 22:33:34NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯纪念徽章
日期:2015-04-14 16:54:452015年亚洲杯之朝鲜
日期:2015-03-19 23:03:16明尼苏达森林狼
日期:2015-03-16 21:51:152015小元宵徽章
日期:2015-03-06 15:57:202015年迎新春徽章
日期:2015-03-04 09:55:282015年辞旧岁徽章
日期:2015-03-03 16:54:15
12 [报告]
发表于 2005-01-09 22:56 |只看该作者

unix多进程使用shell sort排序文件的问题

原帖由 "cnufo" 发表:
那解决这样的问题

要自己编程写排序吗?和sort命令比如何?

另外,sort命令什么算法排的?


鸡和鸭讲

论坛徽章:
0
13 [报告]
发表于 2005-01-09 23:17 |只看该作者

unix多进程使用shell sort排序文件的问题

原帖由 "cnufo" 发表:
那解决这样的问题

要自己编程写排序吗?和sort命令比如何?

另外,sort命令什么算法排的?


我的意思是我第一贴的问题,怎么解决能提高速度

论坛徽章:
62
2016科比退役纪念章
日期:2016-06-28 17:45:06奥兰多魔术
日期:2015-05-04 22:47:40菠菜神灯
日期:2015-05-04 22:35:07菠菜神灯
日期:2015-05-04 22:35:02NBA季后赛大富翁
日期:2015-05-04 22:33:34NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯纪念徽章
日期:2015-04-14 16:54:452015年亚洲杯之朝鲜
日期:2015-03-19 23:03:16明尼苏达森林狼
日期:2015-03-16 21:51:152015小元宵徽章
日期:2015-03-06 15:57:202015年迎新春徽章
日期:2015-03-04 09:55:282015年辞旧岁徽章
日期:2015-03-03 16:54:15
14 [报告]
发表于 2005-01-09 23:19 |只看该作者

unix多进程使用shell sort排序文件的问题

原帖由 "cnufo" 发表:


我的意思是我第一贴的问题,怎么解决能提高速度


你先去做个验证,拿出开几个进程用了多少cpu内存的数据再说
求你了,光问有什么用

论坛徽章:
0
15 [报告]
发表于 2005-01-09 23:28 |只看该作者

unix多进程使用shell sort排序文件的问题

ok,谢谢

BTW,你也是从不会到会的,
你回我的贴子,我很感激,但请不要用这种语气和我们新学的人说话

论坛徽章:
0
16 [报告]
发表于 2005-01-10 01:59 |只看该作者

unix多进程使用shell sort排序文件的问题

我的文件排序代码如下,请帮忙看看问题在哪里?如何能优化?
9个小时实在是太长了!
谢谢

  1. while(gi_process[i]!=0)
  2.         {
  3.                 if(fork() == 0)
  4.                 {       
  5.                         char cdrsourceid;
  6.                         int i_cdrsourceid;
  7.                         /*LoginToDB();*/
  8.                         LoginToDB("BILL_USER_NAME","BILL_PASS_NAME","CONNECT_STRING");
  9.                         gi_process_id = gi_process[i];
  10.                         /*MonitorChild(gi_process_id,"分拣子进程开始运行");*/
  11.                         GetPreFileName();
  12.                         while( OpenCdrFile( &cdrsourceid ) )
  13.                         {
  14.                                 i_cdrsourceid = atoi(&cdrsourceid);
  15.                                 if( atoi(ptr_shm_drecs+i_cdrsourceid*10))
  16.                                 {
  17.                        
  18.                                         sprintf( sort_originalfile, "%s/%d_D%04d.SORT" , rgTempFileDir , i_cdrsourceid , preproc_batch);
  19.                                         sprintf( sort_resultfile, "%s/%d_D%04d.TMP" , rgTempFileDir , i_cdrsourceid, preproc_batch);
  20.                                         sprintf( sort_comm, "sort -T /bill -k 2 %s >; %s" , sort_originalfile, sort_resultfile );
  21.                                         sprintf( rm_comm, "rm %s", sort_originalfile);
  22.                                         MonitorChild(gi_process_id,sort_comm);
  23.                                         if( system( sort_comm ) != -1)
  24.                                         {
  25.                                                 if( system( rm_comm ) != -1 )
  26.                                                 {
  27.                
  28.                                                         printf("processid= %d,sort_originalfile=%s\n",gi_process_id,sort_originalfile);
  29.                                                        
  30.                                                         continue;
  31.                                                 }       
  32.                                                 else
  33.                                                 {
  34.                                                         printf("Error occur while deleting the file %s\n",sort_originalfile);
  35.                                                         ChildError();
  36.                                                         return -1;
  37.                                                 }
  38.                                         }
  39.                                         else
  40.                                         {
  41.                                                 printf(" Error occur while sorting the file %s\n", sort_originalfile);
  42.                                                 ChildError();
  43.                                                 return -1;
  44.                                         }
  45.                                
  46.                                 }
  47.                                
  48.                         }
  49.                         DestroyPreFileNameTbl();
  50.                         exit(0);
  51.                        
  52.                        
  53.                 }
  54.                 else if(i_fork<0)
  55.                 {
  56.                         perror("fork failed\n");
  57.                         system("/bill/prog_source/dispatch/killdisp");
  58.                 }
  59.         i++;       
  60.         }
复制代码

论坛徽章:
0
17 [报告]
发表于 2005-01-10 09:23 |只看该作者

unix多进程使用shell sort排序文件的问题

这段代码显然被简化过,有点莫名其妙。

论坛徽章:
0
18 [报告]
发表于 2005-01-12 00:27 |只看该作者

unix多进程使用shell sort排序文件的问题

我没有简化啊,之前得取数据没粘出来,太大了

重要得是看sort那块

论坛徽章:
0
19 [报告]
发表于 2005-03-01 16:05 |只看该作者

unix多进程使用shell sort排序文件的问题

好久的问题了,自己顶上去

论坛徽章:
0
20 [报告]
发表于 2005-03-01 16:17 |只看该作者

unix多进程使用shell sort排序文件的问题

一个排完后再做第二个。。。共9个,不才11*9=99分钟吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP