Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2154)

Side by Side Diff: net/disk_cache/disk_cache_perftest.cc

Issue 8156: Switch MessagePumpForIO to use completion ports on Windows.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/disk_cache/cache_util_win.cc ('k') | net/disk_cache/disk_cache_test_base.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <fcntl.h> 5 #include <fcntl.h>
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
11 #include "base/perftimer.h" 11 #include "base/perftimer.h"
12 #include "base/platform_test.h"
12 #if defined(OS_WIN) 13 #if defined(OS_WIN)
13 #include "base/scoped_handle.h" 14 #include "base/scoped_handle.h"
14 #endif 15 #endif
15 #include "base/string_util.h" 16 #include "base/string_util.h"
16 #include "base/timer.h" 17 #include "base/timer.h"
17 #include "net/base/net_errors.h" 18 #include "net/base/net_errors.h"
18 #include "net/disk_cache/block_files.h" 19 #include "net/disk_cache/block_files.h"
19 #include "net/disk_cache/disk_cache.h" 20 #include "net/disk_cache/disk_cache.h"
20 #include "net/disk_cache/disk_cache_test_base.h"
21 #include "net/disk_cache/disk_cache_test_util.h" 21 #include "net/disk_cache/disk_cache_test_util.h"
22 #include "net/disk_cache/hash.h" 22 #include "net/disk_cache/hash.h"
23 #include "testing/gtest/include/gtest/gtest.h" 23 #include "testing/gtest/include/gtest/gtest.h"
24 24
25 using base::Time; 25 using base::Time;
26 26
27 extern int g_cache_tests_max_id; 27 extern int g_cache_tests_max_id;
28 extern volatile int g_cache_tests_received; 28 extern volatile int g_cache_tests_received;
29 extern volatile bool g_cache_tests_error; 29 extern volatile bool g_cache_tests_error;
30 30
31 typedef PlatformTest DiskCacheTest;
32
31 namespace { 33 namespace {
32 34
33 bool EvictFileFromSystemCache(const wchar_t* name) { 35 bool EvictFileFromSystemCache(const wchar_t* name) {
34 #if defined(OS_WIN) 36 #if defined(OS_WIN)
35 // Overwrite it with no buffering. 37 // Overwrite it with no buffering.
36 ScopedHandle file(CreateFile(name, GENERIC_READ | GENERIC_WRITE, 38 ScopedHandle file(CreateFile(name, GENERIC_READ | GENERIC_WRITE,
37 FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, 39 FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
38 OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, NULL)); 40 OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, NULL));
39 if (!file.IsValid()) 41 if (!file.IsValid())
40 return false; 42 return false;
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 221
220 int seed = static_cast<int>(Time::Now().ToInternalValue()); 222 int seed = static_cast<int>(Time::Now().ToInternalValue());
221 srand(seed); 223 srand(seed);
222 224
223 TestEntries entries; 225 TestEntries entries;
224 int num_entries = 1000; 226 int num_entries = 1000;
225 227
226 int ret = TimeWrite(num_entries, cache, &entries); 228 int ret = TimeWrite(num_entries, cache, &entries);
227 EXPECT_EQ(ret, g_cache_tests_received); 229 EXPECT_EQ(ret, g_cache_tests_received);
228 230
231 MessageLoop::current()->RunAllPending();
229 delete cache; 232 delete cache;
230 233
231 std::wstring filename(path); 234 std::wstring filename(path);
232 file_util::AppendToPath(&filename, L"index"); 235 file_util::AppendToPath(&filename, L"index");
233 ASSERT_TRUE(EvictFileFromSystemCache(filename.c_str())); 236 ASSERT_TRUE(EvictFileFromSystemCache(filename.c_str()));
234 237
235 filename = path; 238 filename = path;
236 file_util::AppendToPath(&filename, L"data_0"); 239 file_util::AppendToPath(&filename, L"data_0");
237 ASSERT_TRUE(EvictFileFromSystemCache(filename.c_str())); 240 ASSERT_TRUE(EvictFileFromSystemCache(filename.c_str()));
238 241
(...skipping 11 matching lines...) Expand all
250 253
251 cache = disk_cache::CreateCacheBackend(path, false, 0); 254 cache = disk_cache::CreateCacheBackend(path, false, 0);
252 ASSERT_TRUE(NULL != cache); 255 ASSERT_TRUE(NULL != cache);
253 256
254 ret = TimeRead(num_entries, cache, entries, true); 257 ret = TimeRead(num_entries, cache, entries, true);
255 EXPECT_EQ(ret, g_cache_tests_received); 258 EXPECT_EQ(ret, g_cache_tests_received);
256 259
257 ret = TimeRead(num_entries, cache, entries, false); 260 ret = TimeRead(num_entries, cache, entries, false);
258 EXPECT_EQ(ret, g_cache_tests_received); 261 EXPECT_EQ(ret, g_cache_tests_received);
259 262
263 MessageLoop::current()->RunAllPending();
260 delete cache; 264 delete cache;
261 } 265 }
262 266
263 // Creating and deleting "entries" on a block-file is something quite frequent 267 // Creating and deleting "entries" on a block-file is something quite frequent
264 // (after all, almost everything is stored on block files). The operation is 268 // (after all, almost everything is stored on block files). The operation is
265 // almost free when the file is empty, but can be expensive if the file gets 269 // almost free when the file is empty, but can be expensive if the file gets
266 // fragmented, or if we have multiple files. This test measures that scenario, 270 // fragmented, or if we have multiple files. This test measures that scenario,
267 // by using multiple, highly fragmented files. 271 // by using multiple, highly fragmented files.
268 TEST_F(DiskCacheTest, BlockFilesPerformance) { 272 TEST_F(DiskCacheTest, BlockFilesPerformance) {
273 MessageLoopForIO message_loop;
269 std::wstring path = GetCachePath(); 274 std::wstring path = GetCachePath();
270 ASSERT_TRUE(DeleteCache(path.c_str())); 275 ASSERT_TRUE(DeleteCache(path.c_str()));
271 276
272 disk_cache::BlockFiles files(path); 277 disk_cache::BlockFiles files(path);
273 ASSERT_TRUE(files.Init(true)); 278 ASSERT_TRUE(files.Init(true));
274 279
275 int seed = static_cast<int>(Time::Now().ToInternalValue()); 280 int seed = static_cast<int>(Time::Now().ToInternalValue());
276 srand(seed); 281 srand(seed);
277 282
278 const int kNumEntries = 60000; 283 const int kNumEntries = 60000;
(...skipping 17 matching lines...) Expand all
296 int entry = rand() * (kNumEntries / RAND_MAX + 1); 301 int entry = rand() * (kNumEntries / RAND_MAX + 1);
297 if (entry >= kNumEntries) 302 if (entry >= kNumEntries)
298 entry = 0; 303 entry = 0;
299 304
300 files.DeleteBlock(address[entry], false); 305 files.DeleteBlock(address[entry], false);
301 EXPECT_TRUE(files.CreateBlock(disk_cache::RANKINGS, BlockSize(), 306 EXPECT_TRUE(files.CreateBlock(disk_cache::RANKINGS, BlockSize(),
302 &address[entry])); 307 &address[entry]));
303 } 308 }
304 309
305 timer2.Done(); 310 timer2.Done();
311 MessageLoop::current()->RunAllPending();
306 } 312 }
OLDNEW
« no previous file with comments | « net/disk_cache/cache_util_win.cc ('k') | net/disk_cache/disk_cache_test_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698