Hi Michael,
What you're proposing in terms of adding time logging for repos/queries is exactly what I'm looking for. I don't have any eager loading in place at this point in time anyway (it's the last thing I'd want to add).
I'll give the logging proxy bit a look as I have a chance. As for the filter option, that might take me a bit longer, and will give that a shot if it comes to that.
With respect to my code, there's really not all that much.
Essentially, from within one of my Spring MVC controllers, I have a line like this: ("Game" is part of my domain model as I'm doing something similar to IMDB.)
Collection<Game> allGames = IteratorUtil.asCollection(gameRepository.findAll());
And, the "gameRepository" is declared like this:
public interface GameRepository extends GraphRepository<Game>, RelationshipOperationsRepository<Game> {
Game findByGameId(String id);
}
That's about it. Just keeping things simple.
The "Game" model does have a few relationships; however, all relationships/collections are left as lazily loaded so as to avoid a big mess.
Currently, running the code above takes, on average, about 35s to complete the round trip.
If I run the same query via Cypher on the Neo4j console, it takes a whopping 42ms.
Also, if I just fetch a single game via the gameId via SDN, it takes like 600ms.
So, like I said, early days, and I'm trying to really dig in and find out exactly where bottlenecks are occurring so I can rip it apart and really get familiar with it. Like I said before, I have my hypotheses, but I need ways to test them out. :)
Let me know if you want/need additional info/code and, if so, what it is.
Thanks again, Michael!
Cheers,
Duncan