8000 db, refactor: refactor LevelDB for improved performance. · fibjs/fibjs@14d029d · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Commit 14d029d

Browse files
committed
db, refactor: refactor LevelDB for improved performance.
1 parent 20d0778 commit 14d029d

File tree

1 file changed

+10
-16
lines changed

1 file changed

+10
-16
lines changed

fibjs/src/db/LevelDB.cpp

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,11 @@ result_t LevelDB::has(Buffer_base* key, bool& retVal, AsyncEvent* ac)
7979
if (ac->isSync())
8080
return CHECK_ERROR(CALL_E_NOSYNC);
8181

82-
exlib::string key1;
83-
key->toString(key1);
82+
Buffer* buf = (Buffer*)key;
8483

8584
std::string value;
8685
leveldb::Status s = db()->Get(leveldb::ReadOptions(),
87-
leveldb::Slice(key1.c_str(), key1.length()),
86+
leveldb::Slice((const char*)buf->data(), buf->length()),
8887
&value);
8988
if (s.IsNotFound()) {
9089
retVal = false;
@@ -105,12 +104,11 @@ result_t LevelDB::get(Buffer_base* key, obj_ptr<Buffer_base>& retVal, AsyncEvent
105104
if (ac->isSync())
106105
return CHECK_ERROR(CALL_E_NOSYNC);
107106

108-
exlib::string key1;
109-
key->toString(key1);
107+
Buffer* buf = (Buffer*)key;
110108

111109
std::string value;
112110
leveldb::Status s = db()->Get(leveldb::ReadOptions(),
113-
leveldb::Slice(key1.c_str(), key1.length()),
111+
leveldb::Slice((const char*)buf->data(), buf->length()),
114112
&value);
115113
if (s.IsNotFound())
116114
return CALL_RETURN_NULL;
@@ -208,14 +206,11 @@ result_t LevelDB::set(Buffer_base* key, Buffer_base* value, AsyncEvent* ac)
208206
if (ac->isSync())
209207
return CHECK_ERROR(CALL_E_NOSYNC);
210208

211-
exlib::string key1;
212-
key->toString(key1);
209+
Buffer* buf_key = (Buffer*)key;
210+
Buffer* buf_val = (Buffer*)value;
213211

214-
exlib::string value1;
215-
value->toString(value1);
216-
217-
leveldb::Status s = Set(leveldb::Slice(key1.c_str(), key1.length()),
218-
leveldb::Slice(value1.c_str(), value1.length()));
212+
leveldb::Status s = Set(leveldb::Slice((const char*)buf_key->data(), buf_key->length()),
213+
leveldb::Slice((const char*)buf_val->data(), buf_val->length()));
219214
if (!s.ok())
220215
return CHECK_ERROR(error(s));
221216

@@ -293,11 +288,10 @@ result_t LevelDB::remove(Buffer_base* key, AsyncEvent* ac)
293288
if (ac->isSync())
294289
return CHECK_ERROR(CALL_E_NOSYNC);
295290

296-
exlib::string key1;
297-
key->toString(key1);
291+
Buffer* buf = (Buffer*)key;
298292

299293
exlib::string value;
300-
leveldb::Status s = Delete(leveldb::Slice(key1.c_str(), key1.length()));
294+
leveldb::Status s = Delete(leveldb::Slice((const char*)buf->data(), buf->length()));
301295
if (!s.ok())
302296
return CHECK_ERROR(error(s));
303297

0 commit comments

Comments
 (0)
0