2012-03-05 12 views
5

Me acaban de perfiles de algún código de la subasta en la que algunos contadores de frecuencia con el siguiente código:¿Existe un buen patrón para reutilizar las consultas de Morphia?

Datastore ds = ... 
    final Query<Unit> query = ds.createQuery(Unit.class); 
    query.field("text").equal(text); 
    query.field("langCode").equal(lang.getCode()); 
    UpdateOperations ops = ds.createUpdateOperations(Unit.class); 
    ops.inc("frequency", value); 
    ds.update(query, ops, false); 

La creación de la consulta tarda casi el 50% del tiempo de ejecución, y me gustaría volver a utilizar el trabajar de alguna manera. ¿Es seguro guardar los objetos query y ops en un ThreadLocal y simplemente llamar al query.field("text").equal(text) nuevamente para reemplazar el campo "texto"? También parece que la validación ocupa aproximadamente el 30% del tiempo total.

Respuesta

3

Sí, puedes hacer eso. Cada campo se almacena en un mapa, por lo que lo reemplazará cuando se lo llame varias veces.

Cuestiones relacionadas