阅读:3223回复:6
请教lookaside list的效率
看到filemon中维护文件全路径名的buffer用lookaside list维护:
ExInitializeNPagedLookasideList( &FullPathLookaside, NULL, NULL,0, MAXPATHLEN, 'mliF', 256 ); 请问,如果直接定义局部变量(字符串数组)在栈里维护的话: char FullPathName[MAXPATHLEN]; 效率会有什么差别?高了?低了? 为什么? 谢谢 |
|
最新喜欢:![]() |
沙发#
发布于:2007-06-12 02:54
引用第4楼sojod于2007-06-10 20:11发表的 : 不好,因为内核栈太小,有被用完的可能。特别是在文件系统过滤驱动这种可能重入的钩子里。 |
|
|
驱动小牛
![]() |
板凳#
发布于:2007-06-11 18:30
lookaside很明显可以提高效率,不是可有可无的.当你分配频率很高时,会产生大量碎片,必须使用lookaside list,否则会分配失败.必要的时候应该自己封装一下分配函数,按不同大小级别来分配.
|
|
地板#
发布于:2007-06-10 20:11
楼上正解。
那么,是不是filemon中用来缓存文件全路径名的buffer完全可以用字符串数组呢? |
|
地下室#
发布于:2007-06-09 00:10
楼主的比较没意义。
少量数据的话,用栈当然快。 后备列表是给较多数据量设计的。用完当然要还,不然内存就耗尽了。 |
|
|
5楼#
发布于:2007-06-08 22:06
引用第1楼driverdance于2007-06-08 17:28发表的 : 谢谢,不过如果说方便的话我感觉用字符串数组更方便呀,因为只需要定义,不用考虑释放内存的问题,用lookaside list还要初始化,要拿过来,还必须记得还回去,而且拿和还所用的API的执行时间应该也耗时间的吧? |
|
6楼#
发布于:2007-06-08 17:28
效率上不会有差别。ExInitializeNPagedLookasideList主要是方便自己管理内存。
|
|
|