Se você tiver melhores resultados de teste, diga-me, meu e-mail: [email protected] , este artigo deve ser usado como ponto de partida.
Não há necessidade de indicar a fonte para reimpressão, basta repassar como desejar.
Noções básicas do Oracle Berkeley DB: http://www.oracle.com/technology/products/berkeley-db/index.html
Blog oficial do Berkeley DB na China: Blog da equipe de P&D do Oracle Berkeley DB China' Uma exploração preliminar da API C# do BDB
O site oficial da versão C# do programa de teste de desempenho BDB diz que ele pode atingir 45.748 itens/s no XP sp3, mas não está escrito em C# e provavelmente é mais rápido.
Intel single-core 2.8G, 2G nesta máquina, cerca de 15337 linhas/S,
Servidor Xeon quad-core, cerca de 47.746 entradas/S,
É quase impossível encontrar programas de teste de desempenho C# na Internet, e há poucos exemplos. É recomendável que você dê uma olhada no endereço do blog oficial chinês do Berkeley DB: Oracle Berkeley DB China R&D Team's Blog » Estudar
A seguir está o programa principal de teste da versão BDB C# escrito por meu irmão.
código
usando o sistema;
usando System.Collections.Generic;
usando System.Text;
usando BerkeleyDB;
classe pública BRBDBDefault: IDisposable
{
BTreeDatabaseConfig btreeDBConfig;
BTreeDatabasebtreeDB;
public BRBDBDefault() : this("bdb.db") { }
público BRBDBDefault(string nomedb)
{
btreeDBConfig = new BTreeDatabaseConfig();
btreeDBConfig.Duplicates = DuplicatesPolicy.SORTED;
btreeDBConfig.Creation = CreatePolicy.IF_NEEDED; //Cria o banco de dados se ele não existir;
btreeDBConfig.PageSize = 4 * 1024; //Tamanho da página
btreeDBConfig.CacheSize = new CacheInfo(0, 1024 * 1024 * 80, 0); //Tamanho do cache
btreeDB = BTreeDatabase.Open(dbName, btreeDBConfig);
}
public void SetData(int id, dados de string)
{
DatabaseEntry k = new DatabaseEntry();
DatabaseEntry d = new DatabaseEntry();
k.Dados = BitConverter.GetBytes(id);
d.Dados = ASCIIEncoding.ASCII.GetBytes(dados);
tentar
{
btreeDB.Put(k, d);
}
capturar (System.AccessViolationException av)
{
}
pegar { }
}
public void SetData(string id, string dados)
{
DatabaseEntry k = new DatabaseEntry();
DatabaseEntry d = new DatabaseEntry();
k.Data = ASCIIEncoding.ASCII.GetBytes(id);
d.Dados = ASCIIEncoding.ASCII.GetBytes(dados);
tentar
{
btreeDB.Put(k, d);
}
capturar (System.AccessViolationException av)
{
}
pegar { }
}
string pública GetData(int id)
{
DatabaseEntry de = new DatabaseEntry();
de.Data = BitConverter.GetBytes(id);
KeyValuePair
if (par.Valor! = nulo)
retornar ASCIIEncoding.ASCII.GetString (par.Value.Data);
retornar string.Empty;
}
string pública GetData(string id)
{
DatabaseEntry de = new DatabaseEntry();
de.Data = ASCIIEncoding.ASCII.GetBytes(id);
KeyValuePair
if (par.Valor! = nulo)
retornar ASCIIEncoding.ASCII.GetString (par.Value.Data);
retornar string.Empty;
}
string pública GetDBPath()
{
retornar btreeDB.NomeArquivo + btreeDB.NomeBancoDeDados;
}
#region IDisposable membros
público vazio Fechar()
{
btreeDB.Close();
}
público vazio Dispose()
{
if (btreeDB! = null) btreeDB.Dispose();
}
#endregion
}
Em relação ao estabelecimento do ambiente de teste, leia você mesmo o blog oficial, que é muito detalhado. O código de teste de front-end não é mais fixo, apenas um tempo de estatísticas de ciclo,
É recomendado que todos usem CodeTimer de Lao Zhao