Jerasure 杂谈(三)

这篇说的是我开始搞encoder.c这个文件了,因为我后面要用到这个文件来做实验的,用它来生成基本的数据块和校验块,所以就搞得标准和正式点吧,首先重命名后缀名为cpp,头文件的声明也要注意下用extern “C"(不过这里我还是打算以后把五个头文件和五个c文件都写成cpp好了,开源出一套用于win32下的版本的jerasure吧,虽然也谈不上什么贡献,囧……)

好了,废话不多说,一边记录下需要改的点:

第一个:原本的struct timeval是用不了的,要添加上#include <WinSock2.h>

第二个:还是老生常谈,改一改bzero为memset

第三个:encoder里面搞了很多个东西,包括第一点所说的,来计算各个子进程的用时,其实第一个头文件也可以不加,看了下源码也就是计时而已,用各种方法都可以,普通的time也可以,有个很高精读的什么query也可以,方法很多,不一一细说了,这篇文章不错,感谢这位作者的总结:http://www.cnblogs.com/dwdxdy/p/3214905.html

我最后采用的是精读比较高的QueryPerformanceCounter,要包含一个windows.h,如法如下,这样表示的就是用了多少毫秒,后面还带两位小数呢:

    LARGE_INTEGER t1, t2, tc;
    QueryPerformanceFrequency(&tc);
    QueryPerformanceCounter(&t1);
    for(int i = 0;i < 10000;i++)
    {
        cout<<i<<endl;
    }
    QueryPerformanceCounter(&t2);
    cout<<(t2.QuadPart - t1.QuadPart) * 1000.0 / tc.QuadPart<<endl;

 

 第四个:里面有些signal的操作的,我之前也没怎么过这么高大上的东西,添加个<signal.h>吧,然后用SIGINT代替SIGQUIT

第五个:添加个<direct.h>

第六个:现在开始处理它用c的函数fopen等一大堆丑陋的函数写的处理文件的过程了,其实也就打开,创建,获取大小,这样,然后顺便提一下fgets是用来读取内容的,以行为单位或者说以结束符为单位,所以一般都是加上while循环来搞文件的内容。

首先把mkdir的函数的第二个参数去掉吧,只接受一个参数的,mkdir换成_mkdir也可以,只不过前者会出一个警告而已,这里我保留了。

接下来是那个获取文件大小的方法,额,我觉得好好的一个很简单获取属性的一个过程怎么经过FILE*之后就复杂了呢,好吧不管了,反正就按它的规则来吧,谁叫我是菜鸟呢,呵呵。

如下:记得第四行,很比较的,把指针移到初始的位置,不然就到文件尾了。

    FILE* tempfile = fopen("I://test.txt","rb");
    fseek(tempfile, 0, SEEK_END);
    long size = ftell(tempfile);
    fseek(tempfile, 0,SEEK_SET);
fclose(tempfile);

 

题外话,偶然发现了getcwd这个函数还蛮不错的,而且又可以跨平台,权当mark一下:

    char* tmp_dir = getcwd((char*)malloc(sizeof(char)*1000),1000);
    printf("%s\n", tmp_dir);

 

 第七个:修改下文件的路径,主要就是把/变成\\,因为是windows

 

转载于:https://www.cnblogs.com/allen-tung/p/3408084.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值