The use of server-side cursors was one of the primary reasons we started this project in the first place. (The other was unreliable connections.) Cursors are expensive because they slow down the server (for everyone) by consuming lots of server-side resources. Plus the entire cursor has to be built before the first page of rows can be returned. Which as you note, can be a delay for large views.
The new drivers do not build server-side cursors. This reduces resources consumed on the server, thus improving overall user performance. It’s hard to measure in a lab (where servers typically have excessive resources) but is aparent in the field where databases are a lot busier.
So your potential for real-world improvements at the client here are significant.
Most of performance improvement comes down to understanding why something is slow. The new drivers add prop:explain (Clarion Object Based Database Drivers Documentation)
This can be used in places (like browses and reports) to understand what the server is needing to do to perform the request. From this you might choose a better filter, or order, or you might choose to add a key.
Of course if you let your user enter free-form filters, and select any order, then it’s always possible for them to create slow requests. But even slow requests will likely go faster if the server is less busy. (If you are passing those custom values to the server via prop:Sql then you should have serious safety concerns as well.)
This is where things get a little trickier. Two things come into play. (And I’m speaking generally here, obviously I have not seen your specific code.)
Firstly, of course, your SQL code may be less than optimal. By using prop:sql you bypass any built-in functionality in the driver level. In the traditional drivers this was at times necessary, but with the new drivers you may find a more subtle approach is better. After converting to the new driver I would recommend returning to your “slow” prop:sql statements (especially if they are related to browses) and consider replacing them with more fine-grained properties (of which now, a lot more exist).
Think of prop:Sql as a sledge hammer. In the past it’s all we had. So (understandably) folk used it. But it is a very heavy handed approach to something that may be solved with a much smaller intervention. By refactoring that code, into the component properties, your program is able to take advantage of optimisations which are occuring in the driver layer.
Earlier I spoke about a process of improving performance. The important thing to understand is not that “I swapped in the new driver and it got faster” (indeed, it may be faster, or it may be slower) - it’s in the tools the new driver gives you to both understand performance and the ability to control it. There are many factors that come into a performance equation, the server, the client, your code and so on. The way to improving performance is partly yes, a faster client-side driver, but it’s also in the tools for you to improve your code in the longer term.