The Official Status Thread
-
@error said in The Official Status Thread:
@Gąska said in The Official Status Thread:
Also - @error, your remark about circular references hasn't been relevant for at least 30 years.
JS still uses reference counting
which is why there are WeakMaps and WeakSets.
Weak references are useful even in GC'd languages. Even without circular references. They're just a way to make an object go away despite a live reference.
-
I might have mentioned somewhen around posting that thing that I've managed to design a piece that, regardless of GC cleverness, spends an awful lot of time in GC (~40-50% average - depends on the time of day, with regular 70-80% spikes
), which is why I had been reading that blagpost to begin with. Lots of objects being dragged into Gen 2 by (now) several hundred of threads. GC isn't magic.
I have identified tens of places where it could be improved only if someone (me) wouldn't have been apparently drinking dumbfuck juice at the time, but it doesn't look likely that a fix is coming anytime soon. There's always new stuff to bolt on top.
But also it's one of those things that has grown "organically" when I mustn't been looking. I'm afraid to touch the old code lest I find more of those "how could it possibly work at all" and subsequently make so it really doesn't anymore. So far throwing more hardware at the problem has helped
-
Status: hoping IDEA is better than Eclipse.
It's a low bar to clear, but I'm sure it can manage to trip over it.
-
@error said in The Official Status Thread:
Status: hoping IDEA is better than Eclipse.
It's a low bar to clear, but I'm sure it can manage to trip over it.
Off to a great start.
-
Status: Somehow started receiving daily trivia spam from jobs@e.triviaelephant.com and job spam from three job boards I've never heard that starts with "Hey! Zenith! These companies are committed to hiring women like you!"
-
@error said in The Official Status Thread:
Status: hoping IDEA is better than Eclipse.
It is. By far. But only because Eclipse is such a piece of shit.
-
@TwelveBaud said in The Official Status Thread:
Unless you're playing silly buggers with lifetime management, variables die immediately after their last use.
If the advice of the article is outdated, how does it work now? Does the compiler set local variables to null after last use (or somehow else invalidate them explicitly) or does the mark phase of the GC check if local variables are not referenced in the remainder of the scope? Or something else?
-
@Zenith said in The Official Status Thread:
"Hey! Zenith! These companies are committed to hiring women like you!"
Not you. Just women like you.
Filed under: your daily dose of red pill
-
@Carnage said in The Official Status Thread:
Byte arrays... That would have been nice.. I had single variables that were used to both hold short/integer values, bit masks and booleans. In a single 64 bit value.
Byte arrays in one item of those tuple dictionary tuples crap do not exclude such multi-purpose int64 values in other items - they can be combined, of course.
Oh, let me add: we are pork-ramming in C#.
-
He's back!!!!
-
@TwelveBaud said in The Official Status Thread:
Unless you're playing silly buggers with lifetime management, variables die immediately after their last use.
Sorry, the comment I read on the article told to null references from things referenced by "this", that are harder for the compiler to optimze away, not local variables
-
@Gąska said in The Official Status Thread:
@Zenith said in The Official Status Thread:
"Hey! Zenith! These companies are committed to hiring women like you!"
Not you. Just women like you.
Filed under: your daily dose of red pill
Ha, if any of those existed I wouldn't be cooking Spaghetti-Os for dinner.
-
@topspin said in The Official Status Thread:
@TwelveBaud said in The Official Status Thread:
Unless you're playing silly buggers with lifetime management, variables die immediately after their last use.
If the advice of the article is outdated, how does it work now? Does the compiler set local variables to null after last use (or somehow else invalidate them explicitly) or does the mark phase of the GC check if local variables are not referenced in the remainder of the scope? Or something else?
The end of lifetime is encoded in function bytecode itself at compile time. GC doesn't have to check anything - it already knows.
@sockpuppet7 said in The Official Status Thread:
@TwelveBaud said in The Official Status Thread:
Unless you're playing silly buggers with lifetime management, variables die immediately after their last use.
Sorry, the comment I read on the article told to null references from things referenced by "this", that are harder for the compiler to optimze away, not local variables
Not just harder, but usually impossible - because it would be incorrect behavior to collect a live object. Runtimes work under assumption that at any point in time, it is possible for a new module to get dynamically loaded in the middle of things and that module would want to use reflection API to access a private member of any object in existence. As long as an object is alive, all other objects it references must also stay alive, no exceptions.
-
@Zenith said in The Official Status Thread:
@Gąska said in The Official Status Thread:
@Zenith said in The Official Status Thread:
"Hey! Zenith! These companies are committed to hiring women like you!"
Not you. Just women like you.
Filed under: your daily dose of red pill
Ha, if any of those existed I wouldn't be cooking Spaghetti-Os for dinner.
She'd be cooking Spaghetti-Os?
-
IDEA: marginally better than Eclipse; still got nothing on VS Code.
-
Also: even when you're not working in Eclipse, somehow Eclipse project files seem like a de-facto standard across IDEs?
is with that.
-
@Zecc said in The Official Status Thread:
@dkf said in The Official Status Thread:
It's not a true garbage collector if it doesn't handle circular references.
If it doesn't handle circular references, it's a garbage garbage collector.
Please don't start collecting those. Are you'll be a garbage garbage collector collector.
-
@error said in The Official Status Thread:
Also: even when you're not working in Eclipse, somehow Eclipse project files seem like a de-facto standard across IDEs?
is with that.
Not standard. It's just able to interoperate. Probably some random contribution by anonymous open source enthusiast some 14 years ago that somehow still works.
Edit: are you familiar with game emulation? It's kinda like different emulators are able to open each other's save files.
-
@dcon
Wouldn't that be a garbage garbage collector collector factory?
-
@Zenith said in The Official Status Thread:
Ha, if any of those existed I wouldn't be cooking Spaghetti-Os for dinner.
I think you've got the cause and effect reversed there.
Filed under: Learn to cook and maybe someone will date you.
-
@error said in The Official Status Thread:
IDEA: marginally better than Eclipse
It's monolingual. I'd need to also have PyCharm and CLion for the project at work. And all will regularly fuck up a git repo (through being a bit too smartass by half) in ways that it is hard for users to get out of without resorting to the git command line. (Or using Eclipse, which is a bit more subtle and able to handle recovery from most fuckups.
)
-
@error said in The Official Status Thread:
Filed under: Learn to cook and maybe someone will date you.
Do literally nothing whatsoever and the probability of someone dating you will be the same as if you learned cooking.
-
@error said in The Official Status Thread:
Learn to cook and maybe someone will date you.
For me it was learning to dance, but yeah, cooking is definitely in that category of skills. It probably won't come into play in the first couple of dates, but is likely to weigh in the relationship or not decision.
-
@error said in The Official Status Thread:
@Zenith said in The Official Status Thread:
Ha, if any of those existed I wouldn't be cooking Spaghetti-Os for dinner.
I think you've got the cause and effect reversed there.
Filed under: Learn to cook and maybe someone will date you.
- I can cook.
- I live in the middle of nowhere.
- I work with old people that I wouldn't want to date even if they were interested.
-
@HardwareGeek said in The Official Status Thread:
@error said in The Official Status Thread:
Learn to cook and maybe someone will date you.
For me it was learning to dance, but yeah, cooking is definitely in that category of skills. It probably won't come into play in the first couple of dates, but is likely to weigh in the relationship or not decision.
Playing an instrument (well, or at least, passably) is also a panty dropper.
-
Woke up again today to the furnace not working. Pilot light wouldn't stay on. Was pretty sure it was the thermocouple, pulled out my multimeter, it seemed to give off reasonable voltages. After 3 hours of testing stuff and trying to clean it, went out and bought a new thermocouple. It worked.
Got gypped though. Went to ace, they charged me like $14, so even with my $5 coupon it was still $9. Saw later that the store next to me has it for $6.
Status: Cold, waiting for house to warm back up.
-
@error said in The Official Status Thread:
Playing an instrument (well, or at least, passably) is also a panty dropper.
Meh. Never worked for me.
What do you mean, "you have to meet people first"?
-
@Zerosquare For me, learning to dance was the avenue to meeting people. I met my (now ex-)wife in a Viennese waltz class. Unless one dances only with people one already knows (not recommended, for both social and learning reasons), one cannot help meeting people.
-
Status: Scrolling through YouTube, it suggests a video called “deformities that you might have.” Noooope.
Nope nope nope. Not going to watch that one, don’t need further cause for hypochondria.
-
Status: Finished interview. Got asked questions like, how would I go about optimizing cache access inlining on the CPU for efficient memory access in Unity.
And also how I would go about transferring data between threads without impacting garbage collection. Oh, and how would I avoid excessive garbage collection with Linq.
Geezus I'd probably ask google!
-
: "Tell me about your skills."
: "Give me a piece of software or hardware, anything, and I'll find at least one bug in less than 5 minutes."
(Just make sure not to answer "I'll do it for free!" when asked about your salary.)
-
@Zerosquare said in The Official Status Thread:
when asked about your salary.
Heh, didn't even come up.
-
@Tsaukpaetra said in The Official Status Thread:
Status: Finished interview. Got asked questions like, how would I go about optimizing cache access inlining on the CPU for efficient memory access in Unity.
And also how I would go about transferring data between threads without impacting garbage collection. Oh, and how would I avoid excessive garbage collection with Linq.
Geezus I'd probably ask google!
I wouldn't
Concurrent pooled collections
By avoiding it, if at all possible.
-
@Applied-Mediocrity said in The Official Status Thread:
@Tsaukpaetra said in The Official Status Thread:
Status: Finished interview. Got asked questions like, how would I go about optimizing cache access inlining on the CPU for efficient memory access in Unity.
And also how I would go about transferring data between threads without impacting garbage collection. Oh, and how would I avoid excessive garbage collection with Linq.
Geezus I'd probably ask google!
I wouldn't
Yeah, I basically said "I don't understand the underlying question." If you're that concerned with that low of a level, what the fuck are you using .Net for?!?
Concurrent pooled collections
That was my answer, before we delved down into dispatches and callbacks and events....
By avoiding it, if at all possible.
I'm almost thinking I should head in that direction with this company, TBH.
The one guy basically said they do things like unrolling loops on everything because they don't trust the compiler to do it for them, and would rather have undecipherable code that apparently performed well than readable code that might spend a few cycles extra than needed...
-
@Tsaukpaetra said in The Official Status Thread:
@Zerosquare said in The Official Status Thread:
when asked about your salary.
Heh, didn't even come up.
Surprising, since it has no other direction to go.
-
@Tsaukpaetra said in The Official Status Thread:
The one guy basically said they do things like unrolling loops on everything because they don't trust the compiler to do it for them, and would rather have undecipherable code that apparently performed well than readable code that might spend a few cycles extra than needed...
Let’s choose a high level language that lets us write maintainable code, then... don’t.
-
@topspin said in The Official Status Thread:
Let’s choose a high level language that lets us write maintainable code, then... don’t.
Yes, but maintainable code isn't exactly the top priority in gamedev. Unity devs are right to focus. Even top budget productions have many outstanding performance issues, after months of patching.
Unity is the
of game programming.
-
@Applied-Mediocrity said in The Official Status Thread:
Even top budget productions have many outstanding performance issues, after months of patching.
*cough* Cyberpunk *cough*
-
@topspin the problem with Unity is that it's been designed for easy, rapid development of small shitty almost-games, but people didn't get the joke and started using it for serious projects - creating an entire sector in dire need of programmers capable of extracting decent performance out of the worst tech stack imaginable.
-
@Tsaukpaetra said in The Official Status Thread:
cough Cyberpunk cough
I wouldn't know. It doesn't run at all for me. I still haven't moved away from Windows 7 (
) despite the ever increasing risk of Dogbert threatening me with a bazooka.
-
@Gąska said in The Official Status Thread:
the worst tech stack imaginable.
I'm forever wondering to myself, if you were worried about garbage collection interfering with your FPS, why the fuck is your main thread where the renderer lives, where the user will splat all their garbage objects incessantly?
-
@Tsaukpaetra because having the renderer on anything other than your main thread is immense PITA. What you see more often is moving absolutely everything BUT the renderer off the main thread.
-
did you know that MySQL has a hardcoded 16 character limit on database user names? I didn't until just now. Good thing I'm testing in a throwaway sandbox!
-
@Benjamin-Hall said in The Official Status Thread:
did you know that MySQL has a hardcoded 16 character limit on database user names? I didn't until just now. Good thing I'm testing in a throwaway sandbox!
Not since 5.7.something when it was increased.
-
@loopback0 ah. We're still on 5.5.Which yes, is past EOL.
-
-
@Tsaukpaetra said in The Official Status Thread:
how would I go about optimizing cache access inlining on the CPU for efficient memory access in Unity.
Group related data together. If concerns are processed in phases (physics => triggers => T&L => etc), have a pool of buffers for each phase, and have each object reference a buffer in that pool. If concerns are processed per object (do one whole thing, then another whole thing, etc), keep all the data in those individual objects.
@Tsaukpaetra said in The Official Status Thread:
how I would go about transferring data between threads without impacting garbage collection.
Unless you're a Bukkit developer and do something stupid like change from passing four doubles as a location reference to passing a handle to a pool of by-reference immutable four-double structures (also on the heap, each and every one), this isn't something to worry about. In general. Anything you'd normally be passing between threads would likely already exist as an object to begin with, so garbage collection wouldn't be impacted by the passage. However, if you have a closure with managed copies of large unmanaged resources (which might be a coroutine you attached to a MonoBehavior to fire later on), it might be a good idea to instead reacquire that copy once inside the coroutine, so that the copy can be discarded when not in use. This isn't likely though.
@Tsaukpaetra said in The Official Status Thread:
Oh, and how would I avoid excessive garbage collection with Linq.
Be clear and concise with your expressions, and trust the compiler to transform the code appropriately. Also, Linq doesn't cause excessive garbage collection unless you're discarding and re-reifying a large collection each and every frame, so even asking the question is a sign that something is deeply wrong here and needs a more tailored solution.
@Tsaukpaetra said in The Official Status Thread:
they don't trust the compiler to do it for them
Run, don't walk, to the exit. They have everything they need to verify that the compiler is working properly -- which it should, because three companies have dedicated teams with combined centuries of experience working on it -- and everything they need to fix it (both Roslyn and IL2CPP are open source) if it isn't. That they'd rather have undecipherable code means they're setting themselves and anyone they hire up to fail both in that job and in future jobs.
-
@TwelveBaud said in The Official Status Thread:
That they'd rather have undecipherable code means they're setting themselves and anyone they hire up to fail both in that job and in future jobs.
Yeah, I'm leaning on the "fuck no" side. From what I've seen in code samples that were given to current company, I'm not really excited...
-
@Gąska said in The Official Status Thread:
creating an entire sector in dire need of programmers capable of extracting decent performance out of the worst tech stack imaginable.
You mean... PHP and Javascript have finally been killed, and nobody told me?!
-
@Zerosquare obviously your imagination is superior than mine. Or maybe inferior, depending on how you look at it.