So, storing some thousand entities in a single transaction takes a
little more than 1 second, while running each put operation in a
single transaction takes ~50 seconds.

For the record, I'm more concerned that storing "a few thousand"
entities in a single TX takes  a full second: that's not expected, but
my guess is that in this specific case you're not warming up the JVM
nor repeating the test. Having batching enabled, I'd expect this to be
in the order of millions / second.

Uh, this was actually my bad -- with single Tx it also takes long time ...
(@Sanne -- be concerned, be very concerned ... ;-)

14:46:14,669 INFO  [com.google.appengine.tck.benchmark.ObjectifyBenchmarkTest] (default task-1) >>>> N = 6000
14:46:17,418 INFO  [com.google.appengine.tck.benchmark.ObjectifyBenchmarkTest] (default task-1) >>>> Save [6000] time: 2461ms
14:47:53,450 INFO  [com.google.appengine.tck.benchmark.ObjectifyBenchmarkTest] (default task-1) >>>> Full Tx  time: 98576ms
14:50:19,721 INFO  [com.google.appengine.tck.benchmark.ObjectifyBenchmarkTest] (default task-1) >>>> Save [6000] time: 146246ms

The 1st "Save" is fast, as this is just pilling-up the entities within same Tx.
It's the "Full Tx" that is relevant here -- which is ~100sec :-(.

The 2nd "Save" is w/o Tx.

-Ales