Hacker News new | ask | show | jobs
by fogleman 4148 days ago
I don't have anything to compare to, but Go seems quite fast. I would guess no worse than 2x C in this case, but I'm pulling that number out of my butt.

Actually I was originally going to write this in C but it started to be a PITA and I had the spontaneous idea that maybe Go would be the right choice for this (never used it before). It totally was. No way I would've had this level of results so quickly in C.

Being a big fan of Python and C, Go seems like a really good middle ground. Really happy to have learned it.

3 comments

As someone trying to learn the basics of rendering, I was really pleased to see your project pop up on the github explore email today. It's very easy to follow, even for a non-Go programmer like me.

Performance question from a no-Go programmer though - does returning objects from functions incur a cost? For example "func Reflect() Ray {}" or "func Add() Vector" - do they create a new object on the heap? If so is that an issue in Go?

I actually tried changing all of my Rays to *Rays, passing pointers instead of values, and it made no significant difference in rendering times.
I took a look at your code as I've been writing go for side projects for the last few months and like to compare styles.

You nailed the idiomatic go approach to development imho. Very nice.

I'm very very impressed by your code quality especially when this is just your first Go project. I'm an experienced Go developer btw. You're just so good.