- @xh014
是这样的,我原文中已经有了这方面的说明。另外你的电脑配置不错啊,呵呵。 - .net 框架中提供的 System.Environment.GetFolderPath 只能获取当前用户的特殊目录,无法获取所有用户的特殊目录。我做了一个类,可以帮助获取所有用户的特殊目录。网上有很...
- @leezhm
dtozg 说的是对象的 ++ ,这个其实是操作符重载,涉及到操作符重载,编译器无法优化。但对于简单类型,编译器是可以优化的。 - @Meta.Grfx
目前的主流编译器在处理单独的 i++ ;时都会进行优化,因为单独的 i++ ;转储没有任何意义。不过保险起见,用 ++i 更好。 - @越笨越爱
C# 中应该也存在类似问题。 - @bizhu
请看14楼我的回复,表达式中如果只有 ++i 和 i++,指令是一样的,不会出现多一份拷贝的问题。编译器对这种语法肯定是经过优化的。很多问题我们不能想当然。 - @Jeffrey Zhao
Yes! - @dtozg
把 count 变量改成常量,效果和直接在程序中写立即数是一样的,我测试了一下,也是这样的。 - dword ptr [i],edx
01231062 mov eax,dword ptr [i]
01231065 cmp eax,dword ptr [count]
01231068 jge main+6Ch (123106Ch)
{
}
0123106A jmp main+59h (1231059h)... - @allentranks
看你做什么应用了,如果是底层的程序,比如操作系统的调度,BSP,硬件驱动或者是数据库内核,编译器,或者是做科学计算,那指令的优化就比较重要。
如果你只是做普通的应用软件,这些只需了解就可以。 - @laskfla
我也考虑过你说的这个情况,但我认为现代编译器在优化时肯定是可以知道某个局部变量在while block 里面有没有被修改过,这个对编译器来说并不难。但如果 count 不是局部变量,而是全局变量,那么编译器就不能这么优化了,因为可能有其它线程在同时使用这个变量。 - @一人游走
CPU一般会优先去一级或二级缓存读取,像本文的程序,通常是不会去频繁读内存的,也不会占用总线。主要的区别还是多了一个向寄存器拷贝的指令。 - 今天在微博上看到有人说 i—比 i++ 快,我用C写了个程序测试了一下,还真的是快,难道减法运算比加法快?从原理上分析感觉不可能啊,于是深入研究了一下,终于找到原因。
- @hrd
要用64位的客户端组件才行。 .net 在 64位下跑的时候不能调用32位组件。 - .net 的 HttpWebRequest 或者 WebClient 在多线程情况下存在并发连接限制,这个机制会大大影响网络应用程序性能,本文讲述如何修改这个并发连接限制。
- @share赖
很可能是分词问题,另外你用 match 是按或的方式查,要 order by score desc ,否则可能排在后面。
分词问题看下面文章
http://www.cnblogs.com/eaglet/archive/2012/02/15/2352094.html - @yuejianjun
你可以用 lucene 的 3.0 版本试试,据说对这块做了较大优化,我还没做这方面的对比测试,打算最近做。lucene.net 目前也有一个 3.0 的开发版本,我测试过,好像还有一些bug,不太稳定,所有我和 lucene.net 的测试都是基于lucene.net 2.9.4 的。 - @ramic
hubbledotnet 是全文搜索组件,你可能之前没接触过。 - @itmuse
只对 tokenized 和 untokenized 字段建索引,数据会写入数据源,如果不想安装数据库,可以用 sqlite 做数据源。我后面会做个hubble自己的数据源,这样就和lucene 的方式一样了,全部在 hubble 内部管理了。 - @itmuse
可以的,用主动模式索引就可以。主动模式下,直接调用 HubbleCommand 那个类执行 insert 语句就可以实现类似 lucene.net 效果。如果是批量插入,多个insert 语句间用封号隔断。 - @itmuse
理论上是可以的,可能要对一些路径做个修改,我后面打算做这个事情。 - 属性要参与查询还是只是显示?
- 已经支持了,关注我的最新博客
- HubbleDotNet 从 1.2.3 版本以后开始在官方代码中支持和 Mongodb 对接,Mongodb 是10gen 公司开发的 no-sql 数据库,其读写性能比传统关系数据库要快很多,而...
- @viky88
@viky88
like '%xx%' 目前版本是直接到数据库去 like ,效率很低,最好不要这么用。 - eaglet 回答问题:System.Runtime.Serialization.SerializationException Message: Unable to find assembly 'Lucene.Net 2012-04-19 08:58回收是因为你的应用程序池回收了,可以设置IIS 把回收时间加长。序列化问题可能是你的某个文件用了较老版本的 lucene.net 生成,然后反序列化时又用了新版本的 lucene.net ,由于 bi...
- @viky88
我发邮件到你QQ邮箱了。
第二个问题,可以用镜像表,这样就可以脱离sql 数据库了。
另外如果你只是做全文查询,并且返回的字段都是 untokenized 的类型,查询时也可以脱离数据库。 - @viky88
总数的问题,是因为或的时候为了减少合并次数,做了优化,只以最小的一个结果集的总数显示。我会考虑在新版本中对较少数量的结果集做合并以显示正确的总数。
多列放一个字段后搜索出错的问题,能否具体一点,sql 语句是什么样子的,出错信息是什么,堆栈是什么。 - @wolfram
恩,从一个国外的代码中拿过来改的。










