> This loop takes 2500ms or so on my test cluster:
>
> PreparedStatement ps = session.prepare("INSERT INTO perf_test.wibble
> (id, info) VALUES (?, ?)")
> for (int i = 0; i < 1000; i++) session.execute(ps.bind("" + i, "aa" + i));
>
> The same loop with the parameters inline is about 1300ms. It gets
> worse if there are many parameters.


Do you mean that:
  for (int i = 0; i < 1000; i++)
      session.execute("INSERT INTO perf_test.wibble (id, info) VALUES (" +
i + ", aa" + i + ")");
is twice as fast as using a prepared statement? And that the difference
is even greater if you add more columns than "id" and "info"?

That would certainly be unexpected, are you sure you're not re-preparing the
statement every time in the loop?

--
Sylvain

I know I can use batching to
> insert all the rows at once but thats not the purpose of this test. I
> also tried using session.execute(cql, params) and it is faster but
> still doesn't match inline values.
>
> Composing CQL strings is certainly convenient and simple but is there
> a much faster way?
>
> Thanks
> David
>
> I have also posted this on Stackoverflow if anyone wants the points:
>
> http://stackoverflow.com/questions/20491090/what-is-the-fastest-way-to-get-data-into-cassandra-2-from-a-java-application
>

Reply via email to