Has anyone tried immudb in production? What are some of immudb's performance characteristics? It'd be nice to know how it performs under various conditions: query per sec, database / table sizes, SQL join performance etc.
Also, what are the system requirements for immudb? What kind of machine would I need to run a medium to large website (say, 1TB of data, 5-25K qps, e.g. Wikipedia)?
It mentioned in the documentation that it can use S3 as its storage? Are there performance implications if you do this?
I drove through North Lake Tahoe one time on a weekday around midnight, and Google Maps was showing all red as I was driving up the mountain... I was super confused as there were no cars around me and it was not snowing either. What I later realized was that all the trucks were parked alongside the freeway taking breaks... I never realized that you could basically trick Google Maps by using a bunch of cellphones. Very neat!
For low level APIs, I would say anything that could be configured on a per call basis should be parameterized: memory allocations, database & http connections etc.
What will happen if you have bug in your function? Take the fibonacci function for example, what if you have a bug and created an infinite loop? Will Prepack terminate?
I was thinking something similar: how does Prepack determine that a function can't be optimized or hits an infinite loop? Seems like the good ol Halting Problem[0].
The Halting Problem is a bit like Information Theory.
Information Theory, and the Pigeon Hole Principle in specific, says there is no algorithm that can compress all data. That doesn't mean that compression is a fruitless endeavor and we should never have written a compression library.
It means that you have to figure out if your input falls into a subset of data where the outcome of the effort is both tractable and useful. You compress text and structured data, you don't compress noisy data or already compressed data, because it's usually worse than doing nothing.
Similar thing with code analysis. If there is back branching or asynchronous code, you are probably going to hit the Halting Problem, so don't even try. But if the code is linear, then precomputing the output is tractable and useful.
You could also simply apply a budget. If an attempt to unroll a block of code exceeds a certain number of clock cycles or branch operations, you should give up and look at the next most likely scenario. The analysis you're doing might reliably halt in an hour, but who wants to wait that long? Especially when it's one of many such evaluations you'll have to do per build or per day? Just give up and keep moving.
"Then again, with Chrome taking up >4GB of RAM, they probably could have gotten half that performance just by closing their browser or using Safari." This is so true. I've recently stopped using Chrome and switched to Safari. Now my 5-year old MacBook Pro runs like butter.
I'd argue that sometimes you don't really know what good taste is or whether or not you would enjoy something until you've acquired a certain level of competency for it. Sports, programming and math are all like this. The more you work on them the more enjoyable they become, and you'd become a lot more "tasteful".
Also, what are the system requirements for immudb? What kind of machine would I need to run a medium to large website (say, 1TB of data, 5-25K qps, e.g. Wikipedia)?
It mentioned in the documentation that it can use S3 as its storage? Are there performance implications if you do this?