My original argument is completely lost at this point: code quality matters more than compile/link time.
Let me address the other points:
Well, ... yes. Credit where credit's due. I don't intend to demean any of the work done on the linkers. But 10 Kg of cookies are enough. I'd rather like to see better code.
The expression "edit-compile-test" cycle tells already that there are three phases, all of which take their time.
I think this is "normal coding practice". We're using it where appropriate.
Here is where we disconnect. You seem to concentrate on speeding up the edit-compile-test cycle. This is not wrong per-se. A "fluid" edit-compile-test cycle is the basis of every good development process. But if it is the only thing you're concentrating on, you'll miss the boat. There is an simultaneous/alternate truth here: If you are able to reduce the number of cycles you'll save developer man hours. You can also look at it from the other side: the limiting factor is the "cycles" itself.
Think about the guy spoon-editing one line at a time and then "having to wait for the linker". That's your scenario. If you give that guy a faster linker he will be faster at wasting time in the linker...
As you see from my first comment-line, I put a high value to code quality. If you see one of your guys revolving in a 5-second-edit loop, think about the effort it requires to carefully craft a good quality edit. 5-second-edits will not produce quality - it may be an indication of bad code. Hit the brakes before that guy burns out!.
Without having introduced LDD, my colleagues already call me a superhero. There's need for a better title ... ;-)
But seriously, as much as I'd like to introduce LDD (and Clang) we currently have not the option to move to LDD because of third party libraries.
Let me address the other points:
Originally posted by linuxgeex
View Post
Originally posted by linuxgeex
View Post
- The edit phase is the one that should take the most time. There are cases where you just fix "mishaps" or typos that only take seconds to correct. But constantly jumping from small-fix to the next small-fix is wasting time. And yes, you are wasting linker time. But the fix for this is not a faster linker - it is: better thought-through edits. Time spent in carefully crafting the next edit is what *really* reduces development time.
- Developers *do* have some control over the link time by carefully combining static and dynamic linking. Move link-expensive parts to a dynamic libraries which will link faster because of fewer symbol entries.
- It is not always possible to keep testing in the millisecond range. Bare program startup times may already be significant. State-machines which need to be put into a specific state before, network code that depends on external servers, user interfaces that depend on user input, test-cases that depend on gigabytes of loaded data. In nearly every project you have one of these cases.
Originally posted by linuxgeex
View Post
Originally posted by linuxgeex
View Post
Think about the guy spoon-editing one line at a time and then "having to wait for the linker". That's your scenario. If you give that guy a faster linker he will be faster at wasting time in the linker...
As you see from my first comment-line, I put a high value to code quality. If you see one of your guys revolving in a 5-second-edit loop, think about the effort it requires to carefully craft a good quality edit. 5-second-edits will not produce quality - it may be an indication of bad code. Hit the brakes before that guy burns out!.
Originally posted by linuxgeex
View Post
But seriously, as much as I'd like to introduce LDD (and Clang) we currently have not the option to move to LDD because of third party libraries.
Comment