5,914
社区成员




if (n & temp)
buf[datalen++] = ch;
...
//代码在这里用得比较巧妙...
void PrintStr(DWORD n, HANDLE hFile);
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hFile = INVALID_HANDLE_VALUE;
char timebuf[20] = {0};
DWORD TimeStart;
DWORD TimeEnd;
DWORD TimeUsed;
system("pause");
TimeStart = GetTickCount();
hFile = CreateFileA( "./output.txt",
GENERIC_WRITE|GENERIC_READ,
FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (INVALID_HANDLE_VALUE == hFile)
return FALSE;
for (DWORD i=1; i<67108864; i++)
PrintStr(i, hFile);
CloseHandle(hFile);
TimeEnd = GetTickCount();
TimeUsed = TimeEnd - TimeStart;
printf("67108863 records, time costs: %ld(ms)\n", TimeUsed);
system("pause");
return 0;
}
void PrintStr(DWORD n, HANDLE hFile)
{
/*
26 bits for a ~ z:
| 8bits | 8bits | 8bits | 8bits |
|------00|00000000|00000000|00000000|
| zy|xwvutsrq|ponmlkji|hgfedcba|
a ~ z: 97 ~ 122
*/
static char buf[28*1024*1024] = {0}; //28mb
static int datalen = 0;
DWORD temp = 1;
char ch = 'a';
for (int i=0; i<26; i++)
{
if (n & temp)
buf[datalen++] = ch;
ch++;
temp = temp << 1;
}
buf[datalen++] = ',';
if ((datalen > (28*1024*1024 - 28)) || 67108863 == n)
{
DWORD wtlen = 0;
WriteFile(hFile, buf, datalen, &wtlen, 0);
memset(buf, 0, sizeof(buf));
datalen = 0;
}
}
void PrintStr(DWORD n, HANDLE hFile);
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hFile = INVALID_HANDLE_VALUE;
char timebuf[20] = {0};
DWORD TimeStart;
DWORD TimeEnd;
DWORD TimeUsed;
system("pause");
TimeStart = GetTickCount();
hFile = CreateFileA( "./output.txt",
GENERIC_WRITE|GENERIC_READ,
FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (INVALID_HANDLE_VALUE == hFile)
return FALSE;
for (DWORD i=1; i<67108864; i++)
PrintStr(i, hFile);
CloseHandle(hFile);
TimeEnd = GetTickCount();
TimeUsed = TimeEnd - TimeStart;
printf("67108863 records, time costs: %ld(ms)\n", TimeUsed);
system("pause");
return 0;
}
void PrintStr(DWORD n, HANDLE hFile)
{
/*
26 bits for a ~ z:
| 8bits | 8bits | 8bits | 8bits |
|------00|00000000|00000000|00000000|
| zy|xwvutsrq|ponmlkji|hgfedcba|
a ~ z: 97 ~ 122
*/
static char buf[28*1024*1024] = {0}; //28mb
static int datalen = 0;
DWORD temp = 1;
char ch = 'a';
for (int i=0; i<26; i++)
{
if (n & temp)
buf[datalen++] = ch;
ch++;
temp = temp << 1;
}
buf[datalen++] = ',';
if ((datalen > (28*1024*1024 - 28)) || 67108863 == n)
{
DWORD wtlen = 0;
WriteFile(hFile, buf, datalen, &wtlen, 0);
memset(buf, 0, sizeof(buf));
datalen = 0;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hFile = INVALID_HANDLE_VALUE;
char timebuf[20] = {0};
DWORD TimeStart;
DWORD TimeEnd;
DWORD TimeUsed;
system("pause");
TimeStart = GetTickCount();
hFile = CreateFileA( "./output.txt",
GENERIC_WRITE|GENERIC_READ,
FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (INVALID_HANDLE_VALUE == hFile)
return FALSE;
for (DWORD i=1; i<67108864; i++)
PrintStr(i, hFile);
CloseHandle(hFile);
TimeEnd = GetTickCount();
TimeUsed = TimeEnd - TimeStart;
printf("67108863 records, time costs: %ld(ms)\n", TimeUsed);
system("pause");
return 0;
}
void PrintStr(DWORD n, HANDLE hFile)
{
/*
26 bits for a ~ z:
| 8bits | 8bits | 8bits | 8bits |
|------00|00000000|00000000|00000000|
| zy|xwvutsrq|ponmlkji|hgfedcba|
a ~ z: 97 ~ 122
*/
static char buf[28*1024*1024] = {0}; //28mb
static int datalen = 0;
DWORD temp = 1;
char ch = 'a';
for (int i=0; i<26; i++)
{
if (n & temp)
buf[datalen++] = ch;
ch++;
temp = temp << 1;
}
buf[datalen++] = ',';
if ((datalen > (28*1024*1024 - 28)) || 67108863 == n)
{
DWORD wtlen = 0;
WriteFile(hFile, buf, datalen, &wtlen, 0);
memset(buf, 0, sizeof(buf));
datalen = 0;
}
}