[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
这种问题有点偏

TOP

补充 RE: [挑战]100G文本统计+排序

本帖最后由 523066680 于 2019-3-20 19:52 编辑

这个问题有一个分支剧情,就是当时我建议题主去C++板块提问,windoze版主给他提出了解答此题6000元的报价
windoze 回复 3# Windows19

nonono,问题不是支付方式,而是金额。
你要的这个东西显然已经超出论坛技术讨论的范围,我拍脑袋的估一下差不多要一周左右的工作量,假设你找了一个月薪20000的人帮你做这件事,至少就得掏5000块,而且一般零活的价钱会在月结工资的基础上再向上浮动10~20%。

不知道lz有没有做好掏6000块的心理准备。

想借windoze版主的话提醒各位一下,技术是有价值的,像lxh发的那些各种需求,十几二十元,三五人去给他轮番全方位解答,着实是在贬低技术的价值。
以及windoze为这个问题评估了一个价值,各位如果感兴趣可以自己试试,有话题,可以讨论,代码也未必要发出来(几千大洋 )。

-----------------  2019-03-19 补充 -----------------
生成随机文本的代码(初步),
文件大小通过 FILE_SIZE 指定,效率偏低,在我这里(CPU 4GHz) 生成100M需要 13秒,太慢。欢迎补充更好的生成工具。
g++ -std=c++11 -O3 -o gen gen.cpp

-----------------  2019-03-20 更新 -----------------
g++ -std=c++11 -O3 -o gen gen.cpp
本机测试 100M 1.3秒
  1. // Generate Random Text
  2. // 2019-03-20
  3. #include <iostream>
  4. #include <fstream>
  5. #include <string>
  6. #include <random>
  7. #include <chrono>
  8. using namespace std;
  9. using namespace std::chrono;
  10. void init_table( string &table );
  11. void write_random_data( string &table, ofstream &fh );
  12. void time_used(system_clock::time_point& time_a);
  13. const long long FILE_SIZE = 1024*1024*100;
  14. int main(int argc, char *argv[] )
  15. {
  16.     string table;
  17.     init_table(table);
  18.     string file = "F:/Cu_Topics/data.txt";
  19.     ofstream fh(file, ios::binary);
  20.     if ( fh.fail() ) {
  21.         cout << "Can't open file" << endl;
  22.         return 1;
  23.     }
  24.     system_clock::time_point timestamp = chrono::system_clock::now();
  25.     write_random_data( table, fh );
  26.     time_used( timestamp );
  27.     return 0;
  28. }
  29. void write_random_data( string &table, ofstream &fh )
  30. {
  31.     char *buff = new char[FILE_SIZE+1];
  32.     default_random_engine engine(12345);
  33.     uniform_int_distribution<int> get_rand(0, table.size()-1);
  34.     register long long iter = 0LL;
  35.     while ( iter < FILE_SIZE ) {
  36.         buff[iter++] = table[ get_rand(engine) ];
  37.     }
  38.     fh.write( buff, FILE_SIZE );
  39. }
  40. void init_table( string &table )
  41. {
  42.     table =
  43.     "abcdefghijklmnopqrstuvwxyz"
  44.     "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  45.     "1234567890" "1234567890"
  46.     "   " "!(),-.:;?[]_{}" "\n\n"
  47.     ;
  48. }
  49. void time_used(system_clock::time_point& time_a) {
  50.     duration<double> diff;
  51.     diff = chrono::system_clock::now() - time_a;
  52.     cout << "Time used: " << diff.count() << endl;
  53.     time_a = chrono::system_clock::now();
  54. }
复制代码
-----------------  2019-03-21 更新 -----------------
12楼提供了可执行的生成工具,我这里附一个小批处理,方便修改(但注意变量值范围限制)。
  1. @echo off
  2. set /a MB=1^<^<20, SIZE=MB*100, SEED=2019
  3. gensample %SIZE% %SEED%>F:/CU_Topics/a.txt
  4. pause
复制代码
1

评分人数

TOP

返回列表