|
The only time I've seen a truly notable improvement in build times was when we moved from a 6 drive RAID 5 array to a 24 drive RAID 5 array. Our 75-90 minute builds came down to under 20. We'd see further improvement using SSD's obviously.
I'm not sure how RAID works with SSD's. We use RAID 5 mostly to increase capacity and partly for error recovery. I've replaced each of the drives in our older build machine at least once, and a couple of them twice or three times. Never had to re-image the machine yet after a drive failure.
Software Zen: delete this;
|
|
|
|
|
I can't tap my AMD out in terms of pegging all the cores. It's too damned fast, but single thread performance could be better, IMO. I peg one of the cores pretty routinely when I'm developing. It's unfortunate that compilation can't be more of a parallel operation. Too much interdependent mess. I mean, you can get around some of it in C# or C and C++ by using a GLR parser on the front end but that still leaves tree selection from the GLR process, and type/member resolution, which at best, with GLR, you could brute force try each tree on a different core, but you really can't parallelize beyond that. Meh.
Real programmers use butterflies
|
|
|
|
|
The stuff I am doing now can (practically) peg has many cores as I allow it too. I am using a 32-core Threadripper machine right now and I set my solver to use 61 cores and it pegs them all. We reserve three other cores for communication and UI. This is really fun stuff. I wrote it to use either the CPU or a GPU and it is very interesting. My 3090 GPU (with a 5900 CPU) is slightly faster than this Threadripper but a 24-core EPYC CPU using 45 threads is faster than both of them. We have had two machines with EPYC CPUs on order since June and there is no delivery date in sight.
"They have a consciousness, they have a life, they have a soul! Damn you! Let the rabbits wear glasses! Save our brothers! Can I get an amen?"
|
|
|
|
|
honey the codewitch wrote: I can't tap my AMD out in terms of pegging
Your choice of words is... disturbing. And strangely arousing. But mostly disturbing.
GCS d--(d-) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
|
|
|
|
|
For the record, you are the one that took it there, not me.
Just for anyone taking notes.
Real programmers use butterflies
|
|
|
|
|
Does CPU speed make that much difference? In what type of uses does it really matter?
Don't the ram, disk drives etc, make a difference to overall computer performance?
My machines have always run faster than I can think .
Zaphod
|
|
|
|
|
It can, it largely depends on the nature of the problem. There is always some limiting factor involved and all of those you mentioned can be possibilities.
"They have a consciousness, they have a life, they have a soul! Damn you! Let the rabbits wear glasses! Save our brothers! Can I get an amen?"
|
|
|
|
|
A perfectly balanced system has bottlenecks everywhere.
|
|
|
|
|
I've been working on a complicated set of templates used to render state machines for matching text in various ways.
The templates are complicated because they allow for targeting multiple languages by plugging in new templates.
Prior, I was just making one template per target per option, so like SQL matching code vs C# matching code would be two templates.
Well now, it's many templates but, they're structured such that you're forced to basically produce the same code regardless of target (like C#, or SQL). For example, the following is the basic structure of a matching state machine in an language independent way.
a.Comment("Matches text based on a DFA table and block end DFA table");
a.MethodPrologue("None",true,"TableMatcherMatchReturn","TableMatch","TableMatcherMatchImplParams");
a.MatcherCreateResultList();
a.TableMatcherMatchDeclarations();
a.ReadCodePoint();
a.InputLoopPrologue();
a.MatcherResetMatch();
a.TableMachineLoopPrologue();
a.TableMove("dfa");
a.TableMachineLoopEpilogue();
a.TableAcceptPrologue();
a.TableIfBlockEndPrologue();
a.TableStateReset();
a.InputLoopPrologue();
a.TableMachineLoopPrologue();
a.TableMove("blockEnd");
a.TableMachineLoopEpilogue();
a.TableAcceptPrologue();
a.TableMatchYieldResult();
a.BreakInputLoop();
a.TableAcceptEpilogue();
a.TableRejectPrologue();
a.UpdateLineAny();
a.AppendCapture();
a.ReadCodepoint();
a.AdvanceCursor();
a.TableRejectEpilogue();
a.TableStateReset();
a.InputLoopEpilogue();
a.TableStateReset();
a.ContinueInputLoop();
a.TableIfBlockEndEpilogue();
a.TableIfNotBlockEndPrologue();
a.TableMatchYieldNonEmptyResult();
a.TableIfNotBlockEndEpilogue();
a.TableAcceptEpilogue();
a.UpdateLineAny();
a.ReadCodepoint();
a.AdvanceCursor();
a.TableStateReset();
a.InputLoopEpilogue();
a.MatcherReturnResultList();
a.MethodEpilogue();
where a in this case is a especial expando object (dynamic ) I built that resolves to template generation calls that are selected based on your target (like SQL or C#)
Sorry for all the code, it's just hard to explain without it.
I've basically imposed a structure over the flow the code so that it renders the same regardless of target because I was failing tests doing one target per template.
Unfortunately, this method yields dozens of templates per target, but at least my code is consistent.
I had to hack the crap out of my csppg tool to even make this work, but now it's pretty powerful.
I can do this:
<%@param name="docTemplate" type="string"%>
<%@param name="@private" type="bool"%>
<%@param name="returnTemplate" type="string"%>
<%@param name="methodName" type="string"%>
<%@param name="parametersTemplate" type="string"%>
To add parameters to my generator routines. I use this in MethodPrologue and TableMove above.
It's crazy code, folks. Just a zoo. But it works. I wish I had a better way to do this. It's a chore.
Real programmers use butterflies
modified 4-Nov-21 19:20pm.
|
|
|
|
|
If you are a developer then I'm a scammer. We can't be in the same profession, I'm guilty.
Do people start to do the kind of stuff you write about out of experience or there is some kind of oil that one has to smear on their fore head every morning.😑
|
|
|
|
|
I keep chickens, so that I have a supply of them to wave over my code while chanting. It helps.
Real programmers use butterflies
|
|
|
|
|
The proper incantations are important.
"They have a consciousness, they have a life, they have a soul! Damn you! Let the rabbits wear glasses! Save our brothers! Can I get an amen?"
|
|
|
|
|
Chickens only help fix mysterious bugs. There's gotta be a better explanation. I think you've got a familiar who channels exotic code to you from the Other Side.
If you think 'goto' is evil, try writing an Assembly program without JMP.
|
|
|
|
|
TNCaver wrote: Chickens only help fix mysterious bugs Sorry there dude/dudette, but that's rubber ducks[^], not chickens.
Software Zen: delete this;
|
|
|
|
|
loathsome criminal spied transmission (10)
|
|
|
|
|
loathsome
criminal CABLE (no idea why)
spied SPIED
transmission (anag)
DESPICABLE
I'm kinda hoping I'm way wrong ...
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
But the wrong derivation.
Criminal is the anagram indicator, and transmission clues for cable.
|
|
|
|
|
... to all those who celebrate it
Happiness will never come to those who fail to appreciate what they already have. -Anon
|
|
|
|
|
To you too. Hope I am not too late.
ed
|
|
|
|
|
Thanks!
Happiness will never come to those who fail to appreciate what they already have. -Anon
|
|
|
|
|
"Life should not be a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside in a cloud of smoke, thoroughly used up, totally worn out, and loudly proclaiming “Wow! What a Ride!" - Hunter S Thompson - RIP
|
|
|
|
|
|
Sorry - I was busy fixing the kitchen after the small fire yesterday ... bloody new storage heaters ...
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Fire ! not serious I hope ?
"Life should not be a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside in a cloud of smoke, thoroughly used up, totally worn out, and loudly proclaiming “Wow! What a Ride!" - Hunter S Thompson - RIP
|
|
|
|
|
No, I turned it on Tuesday for the first time and when I got back from dropping Herself off at work Wednesday morning the kitchen was lightly full of smoke. No sign of flames or a source, so I turned it off, opened all the windows and moved the sofa bed away from the radiator.
When the air had cleared I turned it back on and no sign of smoke for a couple of hours, or today. So it could be it was just full of dust and just heated it then blew it into the room, or the foam in the sofa got too hot.
I spent this morning reorganising so nothing flammable was near the radiator - and it's all heavy stuff to shift on your own!
No mains gas on the Ynys, so we're all electric heating. New, more efficient rads were installed this summer, but this was the first "in anger" usage, so I'm not too worried about fire risk, just taking sensible precautions.
I'd dump the sofabed - we never use it - but ... Herself.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|