最終更新日 : 2011/1/9 (2011/1/3 より執筆開始)
下滝 亜里 <asatohan at gmail.com>
内容に関するコメント(感想、提案、書き間違いの指摘)は歓迎します。
![]() |
はじめに
測定は、Javaでの低レベル APIを用いて行います。
測定結果
まとめ
cycles | seconds | 補足 | |
put - 作成対象が存在しない場合 | 58 | 0.048 | |
put - 作成対象が存在せずプロパティが1つの場合 | 78 | 0.065 | 58 + 20 = 78 |
put - 作成対象が存在せずプロパティが2つの場合 | 98 | 0.081 | 58 + (20 * 2) = 98 |
put - 作成対象が存在せずプロパティが3つの場合 | 118 | 0.098 | 58 + (20 * 3) = 118 |
put - 作成対象が存在せずプロパティが10個の場合 | 258 | 0.215 | 58 + (20 * 10) = 258 |
put - 作成対象が存在せず要素1つのListプロパティが1つの場合 | 78 | 0.065 | |
put - 作成対象が存在せず要素2つのListプロパティが1つの場合 | 98 | 0.081 | |
put - 作成対象が存在せず要素3つのListプロパティが1つの場合 | 118 | 0.098 | |
put - 作成対象が存在せず要素2つのListプロパティが5つの場合 | 258 | 0.215 | |
put - 作成対象が存在せず2エンティティをバッチ作成 | 116 | 0.096 | 58 * 2 = 116 |
put - 作成対象が存在せず3エンティティをバッチ作成 | 174 | 0.145 | 58 * 3 = 174 |
get - 取得対象が存在する場合 | 10 | 0.008 | |
get - 取得対象が存在しプロパティが1つの場合 | 10 | 0.008 | |
get - 取得対象が存在しプロパティが2つの場合 | 10 | 0.008 | |
get - 取得対象が存在しプロパティが3つの場合 | 10 | 0.008 | |
get - 取得対象が存在しプロパティが10個の場合 | 10 | 0.008 | |
get - 取得対象が存在し要素2つのListプロパティが5つの場合 | 10 | 0.008 | |
get - 取得対象が存在しない場合 | 10 | 0.008 | |
update - 更新対象が存在する場合 | 48 | 0.040 | |
update - 更新対象が存在し1つのプロパティを持ちその値が変化している | 88 | 0.073 | 48 + 40 = 88 |
update - 更新対象が存在し1つのプロパティを持ちその値が変化していない | 48 | 0.04 | |
update - 更新対象が存在し2つのプロパティを持ちそれらの値が変化している | 128 | 0.106 | 48 + (40 * 2) = 128 |
update - 更新対象が存在し2つのプロパティを持ち1つの値が変化している | 88 | 0.073 | 48 + 40 = 88 |
update - 更新対象が存在し1つのプロパティを持ち1つのプロパティを追加 | 68 | 0.056 | 48 + 20 = 68 |
delete - 削除対象が存在する場合 | 25 | 0.020 | |
delete - 削除対象が存在し2エンティティをバッチ削除 | 50 | 0.041 | 25 * 2 = 50 |
delete - 削除対象が存在し3エンティティをバッチ削除 | 75 | 0.0625 | 25 * 3 = 75 |
delete - 削除対象が存在しない場合 | 15 | 0.012 | |
query - エンティティが存在しない | 15 | 0.012 | |
query - エンティティが1つ存在 | 26 | 0.021 | 15 + (11 * 1) = 26 |
query - エンティティが2つ存在 | 37 | 0.030 | 15 + (11 * 2) = 37 |
query - エンティティが3つ存在 | 48 | 0.04 | 15 + (11 * 3) = 48 |
何もしない場合
public class Test1Servlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { QuotaService qs = QuotaServiceFactory.getQuotaService(); long start = qs.getApiTimeInMegaCycles(); // 何もしない long end = qs.getApiTimeInMegaCycles(); double seconds = qs.convertMegacyclesToCpuSeconds(end - start); resp.getWriter().println("start: " + start); resp.getWriter().println("end: " + end); resp.getWriter().println("seconds: " + seconds); } }出力:
start: 0 end: 0 seconds: 0.0
put
出力:
get
出力:
update
出力:
delete
出力:
get - 取得対象が存在しない場合
出力:
delete - 削除対象が存在しない場合
出力:
put - 作成対象存在せずプロパティが1つ
出力:
put - 作成対象が存在せずプロパティが2つ
出力:
put - 作成対象が存在せずプロパティが3つ
出力:
get - 取得対象が存在しプロパティが1つ
出力:
get - 取得対象が存在しプロパティが2つ
出力:
get - 取得対象が存在しプロパティが3つ
出力:
put - 作成対象が存在せずプロパティが10個
測定結果:
get - 取得対象が存在しプロパティが10個
測定結果:
put - 作成対象が存在せず要素1つのListプロパティが1つ
測定結果:
put - 作成対象が存在せず要素2つのListプロパティが1つ
測定結果:
put - 作成対象が存在せず要素3つのListプロパティが1つ
測定結果:
put - 作成対象が存在せず要素2つのListプロパティが5つ
測定結果:
get - 取得対象が存在し要素2つのListプロパティが5つ
測定結果:
put - 作成対象が存在せず2エンティティをバッチ作成
測定結果:
put - 作成対象が存在せず3エンティティをバッチ作成
測定結果:
delete - 削除対象が存在し2エンティティをバッチ削除
測定結果:
delete - 削除対象が存在し3エンティティをバッチ削除
測定結果:
update - 更新対象が存在し1つのプロパティを持ちその値が変化している
測定結果:
update - 更新対象が存在し1つのプロパティを持ちその値が変化していない
測定結果:
update - 更新対象が存在し2つのプロパティを持ちそれらの値が変化している
測定結果:
update - 更新対象が存在し2つのプロパティを持ち1つの値が変化している
測定結果:
update - 更新対象が存在し1つのプロパティを持ち1つのプロパティを追加
測定結果:
query - エンティティが存在しない
測定結果:
query - エンティティが1つ存在
測定結果:
query - エンティティが2つ存在
測定結果:
query - エンティティが3つ存在
測定結果:
参考文献とリソース 更新履歴 todo/memo
作成対象が存在しない場合。
public class Test2Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Entity e = new Entity("MyEntity","my");
ds.put(e);
}
}
実行前データストアの状態:
start: 0 end: 58 seconds: 0.04833333333333333
取得対象が存在する場合。
public class Test3Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Key key = KeyFactory.createKey("MyEntity", "my");
try {
ds.get(key);
} catch (EntityNotFoundException e) {
}
}
}
実行前データストアの状態:
start: 0 end: 10 seconds: 0.008333333333333333
更新対象が存在する場合。
public class Test4Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Entity e = new Entity("MyEntity","my");
ds.put(e);
}
}
実行前データストアの状態:
start: 0 end: 48 seconds: 0.04
削除対象が存在する場合。
public class Test5Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Key key = KeyFactory.createKey("MyEntity", "my");
ds.delete(key);
}
}
実行前データストアの状態:
start: 0 end: 25 seconds: 0.020833333333333332
public class Test7Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Key key = KeyFactory.createKey("MyEntity", "my");
try {
ds.get(key);
} catch (EntityNotFoundException e) {
}
}
}
実行前データストアの状態:
start: 0 end: 10 seconds: 0.008333333333333333
削除対象が存在しない場合。
public class Test6Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Key key = KeyFactory.createKey("MyEntity", "my");
ds.delete(key);
}
}
実行前データストアの状態:
start: 0 end: 15 seconds: 0.0125
作成対象が存在せず、プロパティを1つ持つ場合。
public class Test8Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Entity e = new Entity("MyEntity","my");
e.setProperty("property1", "aaa");
ds.put(e);
}
}
実行前データストアの状態:
start: 0 end: 78 seconds: 0.065
作成対象が存在せず、プロパティを2つ持つ場合。
public class Test9Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Entity e = new Entity("MyEntity","my");
e.setProperty("property1", "aaa");
e.setProperty("property2", 111);
ds.put(e);
}
}
実行前データストアの状態:
start: 0 end: 98 seconds: 0.08166666666666667
作成対象が存在せず、プロパティを3つ持つ場合。
public class Test10Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Entity e = new Entity("MyEntity","my");
e.setProperty("property1", "aaa");
e.setProperty("property2", 111);
e.setProperty("property3", KeyFactory.createKey("MyEntity", "your"));
ds.put(e);
}
}
実行前データストアの状態:
start: 0 end: 118 seconds: 0.09833333333333333
取得対象が存在し、プロパティを1つ持つ場合。
public class Test11Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Key key = KeyFactory.createKey("MyEntity", "my");
try {
ds.get(key);
} catch (EntityNotFoundException e) {
}
}
}
実行前データストアの状態:
start: 0 end: 10 seconds: 0.008333333333333333
取得対象が存在し、プロパティを2つ持つ場合。
public class Test12Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Key key = KeyFactory.createKey("MyEntity", "my");
try {
ds.get(key);
} catch (EntityNotFoundException e) {
}
}
}
実行前データストアの状態:
start: 0 end: 10 seconds: 0.008333333333333333
取得対象が存在し、プロパティを3つ持つ場合。
public class Test13Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Key key = KeyFactory.createKey("MyEntity", "my");
try {
ds.get(key);
} catch (EntityNotFoundException e) {
}
}
}
実行前データストアの状態:
start: 0 end: 10 seconds: 0.008333333333333333
作成対象が存在せず、プロパティを10個持つ場合。
public class Test14Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Entity e = new Entity("MyEntity","my");
for(int i = 0; i < 10; i++) {
e.setProperty("property" + i, i);
}
ds.put(e);
}
}
実行前のデータストア状態:
start: 0 end: 258 seconds: 0.215
取得対象が存在し、プロパティを10個持つ場合。
public class Test15Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Key key = KeyFactory.createKey("MyEntity", "my");
try {
ds.get(key);
} catch (EntityNotFoundException e) {
}
}
}
実行前のデータストア状態:
start: 0 end: 10 seconds: 0.008333333333333333
作成対象が存在せず、要素1つのListプロパティを1個持つ場合。
public class Test16Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Entity e = new Entity("MyEntity","my");
List
実行前のデータストア状態:
start: 0 end: 78 seconds: 0.065
作成対象が存在せず、要素2つのListプロパティを1個持つ場合。
public class Test17Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Entity e = new Entity("MyEntity","my");
List
実行前のデータストア状態:
start: 0 end: 98 seconds: 0.08166666666666667
作成対象が存在せず、要素3つのListプロパティを1個持つ場合。
public class Test18Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Entity e = new Entity("MyEntity","my");
List
実行前のデータストア状態:
start: 0 end: 118 seconds: 0.09833333333333333
作成対象が存在せず、要素2つのListプロパティを5個持つ場合。
public class Test19Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Entity e = new Entity("MyEntity","my");
List
実行前のデータストア状態:
start: 0 end: 258 seconds: 0.215
取得対象が存在し、要素2つのListプロパティを5個持つ場合。
public class Test20Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Key key = KeyFactory.createKey("MyEntity", "my");
try {
ds.get(key);
} catch (EntityNotFoundException e) {
}
}
}
実行前のデータストア状態:
start: 0 end: 10 seconds: 0.008333333333333333
作成対象が存在せず、2つのエンティティをバッチ作成する場合。
public class Test21Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
List
実行前のデータストア状態:
start: 0 end: 116 seconds: 0.09666666666666666
作成対象が存在せず、3つのエンティティをバッチ作成する場合。
public class Test22Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
List
実行前のデータストア状態:
start: 0 end: 174 seconds: 0.145
削除対象が存在し、2つのエンティティをバッチ削除する場合。
public class Test23Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
List
実行前のデータストア状態:
start: 0 end: 50 seconds: 0.041666666666666664
削除対象が存在し、3つのエンティティをバッチ削除する場合。
public class Test24Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
List
実行前のデータストア状態:
start: 0 end: 75 seconds: 0.0625
更新対象が存在し、1つのプロパティを持ちそのプロパティの値が変化している場合。
public class Test25Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Entity e = new Entity("MyEntity","my");
e.setProperty("property1", "AAA");
ds.put(e);
}
}
実行前のデータストア状態:
start: 0 end: 88 seconds: 0.07333333333333333
更新対象が存在し、1つのプロパティを持ちそのプロパティの値が変化していない場合。
public class Test26Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Entity e = new Entity("MyEntity","my");
e.setProperty("property1", "aaa");
ds.put(e);
}
}
実行前のデータストア状態:
start: 0 end: 48 seconds: 0.04
更新対象が存在し、2つのプロパティを持ちそれらプロパティの値が変化している場合。
public class Test27Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Entity e = new Entity("MyEntity","my");
e.setProperty("property1", "AAA");
e.setProperty("property2", "BBB");
ds.put(e);
}
}
実行前のデータストア状態:
start: 0 end: 128 seconds: 0.10666666666666667
更新対象が存在し、2つのプロパティを持ち、1つのプロパティの値が変化している場合。
public class Test28Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Entity e = new Entity("MyEntity","my");
e.setProperty("property1", "aaa");
e.setProperty("property2", "BBB"); // こちらだけ更新
ds.put(e);
}
}
実行前のデータストア状態:
start: 0 end: 88 seconds: 0.07333333333333333
更新対象が存在し、1つのプロパティを持ち、1つのプロパティを追加する場合。
]
public class Test29Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Entity e = new Entity("MyEntity","my");
e.setProperty("property1", "aaa");
e.setProperty("property2", "bbb"); // 追加
ds.put(e);
}
}
実行前のデータストア状態:
start: 0 end: 68 seconds: 0.056666666666666664
エンティティが存在しないKindに対するクエリの場合。
public class Test30Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Query q = new Query("MyEntity");
List
実行前のデータストア状態:
start: 0 end: 15 seconds: 0.0125
エンティティが1つ存在するKindに対するクエリの場合。
public class Test31Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Query q = new Query("MyEntity");
List
実行前のデータストア状態:
start: 0 end: 26 seconds: 0.021666666666666667
エンティティが2つ存在するKindに対するクエリの場合。
public class Test32Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Query q = new Query("MyEntity");
List
実行前のデータストア状態:
start: 0 end: 37 seconds: 0.030833333333333334
エンティティが3つ存在するKindに対するクエリの場合。
public class Test33Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getApiTimeInMegaCycles();
doAction();
long end = qs.getApiTimeInMegaCycles();
double seconds = qs.convertMegacyclesToCpuSeconds(end - start);
resp.getWriter().println("start: " + start);
resp.getWriter().println("end: " + end);
resp.getWriter().println("seconds: " + seconds);
}
private void doAction() {
NamespaceManager.set("pf");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Query q = new Query("MyEntity");
List
実行前のデータストア状態:
start: 0 end: 48 seconds: 0.04