FirebirdSQL / NETProvider

Firebird ADO.NET Data Provider
https://www.firebirdsql.org/en/net-provider/
Other
152 stars 63 forks source link

Optimization Fetch() and FetchAsync() #1119

Closed BFuerchau closed 11 months ago

BFuerchau commented 1 year ago

Advantage

BFuerchau commented 1 year ago

I hope i didn't have transmission errors. It seams i can't create a separate pull request for the FbDataReader. Can you help once more?

cincuranet commented 11 months ago

This PR is having unrelated changes in FbDataReader from other PR.

BFuerchau commented 11 months ago

I have recognnized, that the call needs really time. Without inlining the speed goes a little bit down.

cincuranet commented 11 months ago

But did you consider other effects of inlining? The JIT is doing great job 99% of the time with its heuristics on general code. I can make numbers nice in (micro)benchmarks, but that doesn't mean the benefit will be there for real-world scenario.

BFuerchau commented 11 months ago

I can't manage to put the 2 changes of GdsStatement version 10 and 13 in exactly 1 commit, since version 13 has to make an override.

cincuranet commented 11 months ago

Multiple commits into GdsStatements is fine. I'm talking about changes in FbDataReader.

BFuerchau commented 11 months ago

I test with 1000 and more rows per result. What's the harm if the inlining is active;-)?

Ok, but how can i make the FbDataReader a separate request? Should i fork the project a second time only for the reader?

cincuranet commented 11 months ago

What's the harm if the inlining is active;-)?

https://en.wikipedia.org/wiki/Inline_expansion

Ok, but how can i make the FbDataReader a separate request?

Use different branch.

BFuerchau commented 11 months ago

I have tried a different branch, but the 2 commits from GdsStatements are than also included. I didn't know how to do this, as you can see this is a second try.

I'm just overwhelmed. So far I've only worked with a local git with a single branch and multiple changes are packed into one commit. I just don't know what to do. Is it perhaps better to do a separate fork with exactly this 1 change?

fdcastel commented 11 months ago

Is it perhaps better to do a separate fork with exactly this 1 change?

Yes. This is the best practice, @BFuerchau.

From latest master, create one branch for each of your (independent) changes. Then push each of them and submit a different PR.

Coming late to the party, but I presume this is what @cincuranet is asking you to do.

fdcastel commented 11 months ago

So far I've only worked with a local git with a single branch and multiple changes are packed into one commit.

Tip: You are losing a lot of what git could offer you.

Make smaller changes, commit often. Use branches like hell. They are extremely light in git (unlike other-revision-control-systems-of-the-past-who-must-not-be-named).

Also a good git client may help you.

And Beyond Compare. I simply cannot work without it. Best 70 USD I already spent in my life.

BFuerchau commented 11 months ago

Thank you for your tips. I'm a single developer with only a few small projects. We have a gitlab server, but i don't like the overhead. I'm using git only as additional source save;-).

So for the requests i will try it for a last time. If it also don't work i have no idea to do so. I can than only upload the my changes for 3 sourcefiles and may be another one will take this changes. For me, i can live with my own version of netprovider;-) to load fast resultsets.

BFuerchau commented 11 months ago

I will try it the last time with a new request.