소스 검색

Add a braindead 10x speedup to kmalloc().

Skip over entirely full buckets when scanning for a big-enough memory slot.
This means I can postpone writing a better kmalloc() for a while longer! :^)
Andreas Kling 6 년 전
부모
커밋
5e8e554f94
1개의 변경된 파일6개의 추가작업 그리고 0개의 파일을 삭제
  1. 6 0
      Kernel/kmalloc.cpp

+ 6 - 0
Kernel/kmalloc.cpp

@@ -112,6 +112,12 @@ void* kmalloc(dword size)
 
 
     for( i = 0; i < (POOL_SIZE / CHUNK_SIZE / 8); ++i )
     for( i = 0; i < (POOL_SIZE / CHUNK_SIZE / 8); ++i )
     {
     {
+        if (alloc_map[i] == 0xff) {
+            // Skip over completely full bucket.
+            chunks_here = 0;
+            continue;
+        }
+        // FIXME: This scan can be optimized further with LZCNT.
         for( j = 0; j < 8; ++j )
         for( j = 0; j < 8; ++j )
         {
         {
             if( !(alloc_map[i] & (1<<j)) )
             if( !(alloc_map[i] & (1<<j)) )