V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  zungmou  ›  全部回复第 8 页 / 共 13 页
回复总数  255
1  2  3  4  5  6  7  8  9  10 ... 13  
2015-10-09 10:58:47 +08:00
回复了 zungmou 创建的主题 问与答 有没有专门用于接收短信的私人国际手机号码服务?
@forever139 textnow 好像对中国以及某些 VPN 地区禁止注册了。
2015-10-09 10:43:14 +08:00
回复了 zungmou 创建的主题 问与答 有没有专门用于接收短信的私人国际手机号码服务?
@Kahn 前提是 Google Voice 需要一个美国号码。
2015-10-05 19:43:18 +08:00
回复了 raysmond 创建的主题 问与答 该用什么姿势来整理书签和网上看到的文章文档等
我不喜欢太复杂的结构,一旦存在结构就需要合理的分类,很麻烦,直接提供一个强大的搜索功能,以后遇到关键字搜索便是。
2015-10-05 19:39:25 +08:00
回复了 dqh3000 创建的主题 问与答 现在的 web 模型,有实时前后端统一的构架吗?
我觉得像 twitter, facebook, weibo 这种“实时”已经够用了,如果楼主追求的是实时的算法,排斥轮询,那就有个兼容性的问题了。
2015-10-05 19:35:49 +08:00
回复了 loading 创建的主题 问与答 卧槽, exfat 的移动硬盘点了格式化…
快格没什么关系
2015-09-28 08:38:24 +08:00
回复了 zungmou 创建的主题 投资 深沪股票 LEVEL2 数据接口
@elgma200 你有数据接口?
用了 N 年 LastPass 的用户,后来还是转头 1Password 门下。

原因很简单, LastPass 的移动端是租用的, 1Password 是一次性付费,并且 1Password 移动端的体验是最佳的,并且支持指纹解锁。
2015-08-28 21:32:14 +08:00
回复了 junnplus 创建的主题 程序员 给 QQ 邮箱跪了
一封几年前收到的 QQ 邮件,里面的附件楞是打不开,用任何方式都无用,基本判定是附件损坏,后来就不敢再用 QQ 邮箱了。
RDP 的流畅度跑赢 VNC 几条街...
2015-04-11 12:09:17 +08:00
回复了 kn007 创建的主题 问与答 大伙对理发器有了解不?推荐一个?
@kn007 脑门后面的头发,自己怎么修理?
2015-04-07 14:18:53 +08:00
回复了 xgdyhaiyang 创建的主题 职场话题 有辞职全职做交易的 V2EXer 吗?
小做做可以,发家致富靠赌。
2015-04-04 21:53:02 +08:00
回复了 zungmou 创建的主题 C 高效扫描一个大文件内字节出现的频率?
@ncisoft 您很细心~ 改成long类型,200MB平均耗时0.76秒,总耗时21秒。
2015-04-04 21:29:17 +08:00
回复了 oojiayu 创建的主题 程序员 看雪学院(看雪论坛)——有没有 V2 的朋友常去转转的
X档案也是我入门编程的第一本杂志,当年每一期都附带一张光盘,那会还是 FLASH 的天下,每期的多媒体光盘都是用 FLASH 做的很精美,X档案应该是一代人的回忆。
2015-04-04 21:03:30 +08:00
回复了 zungmou 创建的主题 C 高效扫描一个大文件内字节出现的频率?
@wuxqing
@billlee
@ncisoft
@batman2010
@Andiry
@yangff

最后一个问题,为什么 x64 比 x86 进行 for 循环所需的时间更长?
2015-04-04 21:02:23 +08:00
回复了 zungmou 创建的主题 C 高效扫描一个大文件内字节出现的频率?
@wuxqing
@billlee
@ncisoft
@batman2010
@Andiry
@yangff

首先感谢各位的回复。

我的操作系统是 Win7 x64,CPU I5-4430主频3G,内存16GB,普通机械硬盘,开发环境是VS2013+C#;
经过一夜优化调试,现总结给大家,一个5G 文件,扫描统计后的结果如下:

x64编译:
每200MB扫描耗时0.85秒(不包括IO时间)
总耗时23.37秒(包括IO时间)

x86编译:
每200MB扫描耗时0.58秒(不包括IO时间)
总耗时16.66秒(包括IO时间)

优化主要将C#的数组改为指针去统计,绕过托管内存的消耗。
当中试过并行计算,使用的是.NET的并行类,但扫描时间比 for 循环稍长。

备注:每次缓存的数据大小和扫描时间成正比增长,所以不考虑是否全部载入内存。

源代码如下:

unsafe static class Analyzing
{
public static int[] Count(Stream stream)
{
byte[] buffer = new byte[204800000];
int read = 1;

// 用于保存统计数据的内存。
int* count = (int*)Marshal.AllocHGlobal(sizeof(int) * 256);

// 用0填充内存;
for (int i = 0; i < 256; i++)
{
count[i] = 0;
}

// 记录工作开始的时间。
DateTime begin = DateTime.Now;

// 循环读取数据到内存;
while (read > 0)
{
read = stream.Read(buffer, 0, buffer.Length);
if (read == 0) break;
// 记录扫描开始的时间。
DateTime start = DateTime.Now;
// 扫描内存的数据,并进行统计;
// count为int类型,256大小的内存区域;
// count的索引位置(0-255),代表字节0-255;
// count的索引内容,代表字节出现的频率。
for (int i = 0; i < read; i++)
{
count[buffer[i]]++;
}
// 输出扫描耗费的时间。
Console.WriteLine((DateTime.Now - start).TotalSeconds);
}

Marshal.FreeHGlobal((IntPtr)count);

// 输出工作耗费的时间。
Console.WriteLine((DateTime.Now - begin).TotalSeconds);
Console.ReadKey();

// 将非托管内存转换为托管数组,并返回该结果。
int[] result = new int[256];
Marshal.Copy((IntPtr)count, result, 0, result.Length);

return result;
}
}
2015-04-04 09:33:34 +08:00
回复了 zungmou 创建的主题 C 高效扫描一个大文件内字节出现的频率?
@Andiry mmap 虽然映射过去了,可IO时间真的能缩减吗?
2015-04-04 09:12:26 +08:00
回复了 zungmou 创建的主题 C 高效扫描一个大文件内字节出现的频率?
@ncisoft 十分感谢您的回复。

C#的MemoryMappedFile是封装mmap的类,当使用mmap方法和直接读取文件做对比,感觉性能差不了多少,基于C#测试。

public static int[] Count(Stream stream)
{
byte[] buffer = new byte[204800000];
int read = 1;
int[] count = new int[256];

DateTime begin = DateTime.Now;
while (read > 0)
{
read = stream.Read(buffer, 0, buffer.Length);
if (read == 0) break;

DateTime start = DateTime.Now;
for (int i = 0; i < read; i++)
{
count[buffer[i]]++;
}
Console.WriteLine((DateTime.Now - start).TotalSeconds);
}
Console.WriteLine((DateTime.Now - begin).TotalSeconds);
Console.ReadKey();
return count;
}

我把统计方法封装成上面这段函数,用于统计一个流内出现的字节频率,可以输入FileStream或MemoryMappedFileStream。每读取200MB的数据到缓存,扫描的平均时间(不包括IO时间)为1.40秒左右,读取一个4.78G的文件总耗费37秒左右。

不知以上方法是否还能再优化?
1  2  3  4  5  6  7  8  9  10 ... 13  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1134 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 28ms · UTC 18:25 · PVG 02:25 · LAX 11:25 · JFK 14:25
Developed with CodeLauncher
♥ Do have faith in what you're doing.