|

写了个序号生成,从1-11600000,用了5-10个线程跑,cpu都跑满了,磁盘写入速度才1.3mb左右,耗时40秒,1个线程反而磁盘写入速度能达到4mb,是不是多线程写的不行啊
快速生成索引文件 (“e:\123.txt”, 11600000 )|
快速生成索引文件 | 双精度小数型 | | |
文件路径 | 文本型 | | | | 最大索引 | 长整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 文件号 | 整数型 | | | 线程数 | 整数型 | | | 块值 | 整数型 | | | 余数 | 双精度小数型 | | | i | 整数型 | | | 启动时间 | 整数型 | | |
文件号 = 文件_打开文件A (文件路径, , , #CREATE_ALWAYS )文件_移动读写位置Ex (文件号, #FILE_BEGIN, 求索引序号占用字节 (最大索引 )) 文件_设置文件尾 (文件号 )文件_关闭文件 (文件号 )线程数 = 3 块值 = 绝对取整 (最大索引 ÷ 线程数 )余数 = 绝对取整 (最大索引 % 线程数 )启动时间 = 取启动时间 ()集_线程池. 创建 (线程数, 线程数, , , ) 计次循环首 (线程数, i ) 集_线程池. 投递任务 (&子程序1, i - 1, 块值 ) 程序_延时 (100 ) 计次循环尾 () 如果真 (余数 ≠ 0 ) 子程序1 (i - 1, 块值, 余数 ) 判断循环首 (集_线程池. 取_是否空闲 () = 假) 程序_延时 (100 ) 判断循环尾 ()集_线程池. 销毁 ()调试输出 (“执行完毕”, 取启动时间 () - 启动时间 )返回 (0 )变量名 | 类 型 | 静态 | 数组 | 备 注 | 文件号 | 整数型 | | | i | 整数型 | | | 初始值 | 双精度小数型 | | | 文本 | 字节集 | | | 写入的文本 | 字节集 | | | 计次 | 整数型 | | |
文件号 = 文件_打开文件A (“e:\123.txt”, , #FILE_SHARE_READ + #FILE_SHARE_WRITE, #OPEN_ALWAYS, )初始值 = 索引 × 块值 文件_移动读写位置 (文件号, #FILE_BEGIN, 求索引序号占用字节 (初始值 )) 如果真 (余数 > 0 ) 块值 = 余数 计次循环首 (块值, i ) 文本 = 到字节集 (到文本 (初始值 + i ))  写入的文本 = 写入的文本 + 文本 + { 13, 10 } 计次 = 计次 + 1  如果真 (计次 = 50 ) 文件_写出字节集 (文件号, 写入的文本 )  计次 = 0   写入的文本 = { }  计次循环尾 () 如果真 (写入的文本 ≠ { }) 文件_写出字节集 (文件号, 写入的文本 ) 计次 = 0  写入的文本 = { }关闭文件 (文件号)变量名 | 类 型 | 静态 | 数组 | 备 注 | 字节数 | 长整数型 | | | 数字长度 | 整数型 | | | 剩余数 | 长整数型 | | | 换行长度 | 整数型 | | | 积数 | 长整数型 | | | 十的次方 | 长整数型 | | | 循环次数 | 整数型 | | | 最大索引 | 长整数型 | | |
换行长度 = 2 最大索引 = 最大索引序号 判断循环首 (最大索引 > 0 ) 循环次数 = 循环次数 + 1  数字长度 = 取文本长度 (到文本 (最大索引 ))  判断 (数字长度 > 1 )  十的次方 = 求次方 (10, 数字长度 - 1 )  剩余数 = 最大索引 (最大索引 - 十的次方 ) - 1   积数 = 最大索引 - 剩余数   最大索引 = 剩余数   字节数 = 字节数 + 积数 (数字长度 + 换行长度 )    字节数 = 字节数 + 最大索引 (1 + 换行长度 ) 跳出循环 ()  判断循环尾 ()返回 (字节数 )
|
|