In my comment I wrote "As an example ..." and I absolutely did not say this is a universal truth. It appears like you are able to comprehend basic English, and should be able to read my commentary.
You wrote the following in another comment
> but feeding this troll is sort of fun
Who do you think you are to write stuff like that? Why do you feel like it is OK to make these types of personal attacks on a forum like this?
"As an example ..." and I absolutely did not say this is a universal truth
Fair enough that you may have meant it like that. However it can also read as "an example of the M1 being nothing more than a high end office computer" is that "a test suite" (universally) runs slower. The next example might be that say "a C compiler runs slower", "a web server will run slower" etc. As I understand you now, you meant that one of your test suites ran slower. You could have made it more clear by saying exactly that: "As an example, one of our main test suites ran ..."I read it the other way as just an example of test suite, compiler, web server etc. specifically because you then went on to say that it's just a glorified office computer, where it basically doesn't matter that this happens, because it's gonna be good enough to run a browser to look at Facebook ;)
Who do you think you are to write stuff like that?
This has nothing to do with "who". And also nothing with you. That's between him/her and me. It has to do with the fact that trap_goes_hot completely ignored anything you or I wrote and proceeded to accuse me of criticizing you. Again "criticizing" can be taken in multiple ways: To find fault with
To judge the merits and faults of; analyze and evaluate.
I think he meant that I was finding fault with in a harsh way. That's not what I was doing. I was analyzing and evaluating and responding to that. I analyzed your sentences and tell you that I read it such that you were saying the test suite thing "as if this was universal truth". That is how I read it and the rest of my reply is to be taken under that premise.He then went on to reply with yet another trolling reply. I simultaneously didn't want to validate it with a reply but I really had to. I bet we could have gone on from one thing to another for another 20 replies and gotten nowhere.
I realise that this might not be due to the architecture or the M1 per se but due to the fact that we are emulating an x86 docker image. Regardless the test suite runs significantly slower, than if my computer would have been x86, which is the experience I am commenting on – a point that I also fleshed out even.
However, I love browsing the web, watching movies, writing email, etc. on the computer, at which it excels.
----
I read the troll judgement as being passed towards me, if that was not the case, I apologise.
Yes, internet communication can be difficult.
A database is a prime example of where any minor slowdown due to emulation can be disastrous. A database does lots of things in an optimal way to make it fast. For that it has to make assumptions (or know) how certain things behave, what properties they have. Emulation can screw with that. This is also why running your production database in a VM against virtualized storage (not even thinking docker/k8s etc. here - tho that's also bad in the same way - just plain old running that postgres in production in a VM provided by your vmware esx cluster) is not a good idea. It's just going to be abysmally slow and slow down at exactly the wrong moments even if it "usually" runs "just fine". If your tests rely on that postgres database in any significant way, I am not the least surprised that your test suite slows down like that.
My advice would be to replace it with a native image or better yet, write less tests that rely on that postgres database and write the integration tests that aren't reliant on actual postgres behavior against an in-memory database like hsqldb and only have a very thin layer of tests running against an actual postgres, if you still need them at all.
Fun exercise: take an ARM version of postgresql and run it under emulation on an x86 computer and see how your test suite behaves ;)
replace it with a native image
This is not possible, as we work with a specific version and the test DB needs to be the same version / have the same feature as production.The other advice would be terrible for our team. It would increase the behaviour surface significantly. Now we have huge discrepancies between what runs in production on what runs in test.
Alternatively: We could also just eat the 13 seconds slowdown, as we doe now or don't use Apple M1s. Both are much better approaches and much more cost efficient.
Why would it be Apple's responsibility to make x86 optimized code run at native ARM speeds? That makes no sense to me. It's Apple's responsibility to make your upgrade path to ARM hardware as painless as they can. Thus the emulation layer so that for most cases you can just migrate your Intel Mac to the M1 and keep going as before. But you'll want to slowly replace every binary you can w/ the native ARM version if you want to get the performance gains of the M1.
I think it's like saying "it's a distraction to change my software take advantage of multi core CPUs. It's Intel's job to keep making single core performance faster and faster". Intel was making things faster by going from upping the clock speeds to multi core and hype threaded CPUs. If you choose to call it a distraction you'll be missing out on the performance gains other people can take advantage of because their software can take advantage of having more than one CPU available. An easy example is older computer games that basically don't run any faster today than 15 years ago because they can only use one CPU and the clock speeds are almost the same. Other games are able to run enemy AI, pathfinding, the UI rendering thread etc. on different threads and thus take advantage of the multi-core CPUs.
This is not possible, as we work with a specific version and the test DB needs to be the same version / have the same feature as production.
I would like to understand this better. You say it's not possible. Whenever I hear that something is not possible, I instinctively want to dig deeper. Maybe it really isn't. Or maybe there's an assumption somewhere that turns out not to be universally true or that w/ a slight modification and perhaps a divide and conquer strategy it actually is possible. So I'll start w/ the first of the "5 whys": Why is it not possible? ;) The other advice would be terrible for our team. It would increase the behaviour surface significantly. Now we have huge discrepancies between what runs in production on what runs in test.
What are those huge discrepancies? What exactly are you afraid of will run differently between what runs in test and in production? Keep in mind that I don't know anything about your test suite and what specifically you're testing. Maybe in your exact scenario you're right and it would potentially be bad. In many many situations I've found it's mainly just fear of the uncertainty and in fact there's no issue. Alternatively: We could also just eat the 13 seconds slowdown, as we doe now or don't use Apple M1s. Both are much better approaches and much more cost efficient.
Like I said, I don't know your specific circumstances but these things can add up. 13 seconds here, 9 seconds there etc. and suddenly your test suite doesn't take 2 minutes to run but 10. That's a significant slowdown of a developer. Even 2 minutes wait time is an eternity if you're trying to move ahead w/ something and now you have to sit there and wait. Worst case your developer decides that 2 minutes is a long enough period of time to "quickly go check HN" and 45 minutes later he emerges from the browser window to see that the test suite failed 10 seconds after he switched to reading HN ;)You sound like a really good candidate. If you can develop and manage this type of optimisation in a startup with a teams of 3 that manages blockchain protocols, a web app, a mobile app, a multi modal service backend, and several integrations while also delivering on product faetures, then you are definitely the person we need!
The OP made a claim of basically (paraphrasing here): "this thing blows, it results in a 50% performance drop for test suites".
I believe him for his case. Our case was showing the oppositebehavior. Thus it seems to depend. Simple logic.
In fact, yes, that is exactly how reviews should work, if there wasn't so many fake reviews that it's not helping. People have a tendency to review and especially comment on a review, if they have an issue with something. Even a product with 3 stars could actually be a 4.5 star overall.
The comments are more important than the number. Like with most 'metrics'. They can make you look but you really have to take a qualitative look after that. Take lots of Amazon reviews that are 1 star and if you read the review comment it says something along the lines of "Product came damaged in the box and Amazon support wouldn't replace it". Or 5 star reviews with text like "Arrived super fast, haven't had a chance to try it yet". The reviews are meant to be for the product not Amazon's service or shipping speed.
Likewise if someone buys say a fish knife and then comments with a 1 star review of "Useless, can't make proper feather sticks or split wood at the camp site." And then I may give a 5 star w/ comment "Awesome fish knife, cut up and filleted the fish I caught beautifully. Been using it for a year now and shows no signs of wear."
I have no clue what you're talking about calling it a fake review and such. Your cookie was a bit moldy ;)
I said "As an example ..." which you are paraphrasing into "... for test suites".
You are paraphrasing my existentialistic argument into a universal argument. Please never do this.
It seems like something that is prone to happen in text and 'on the interwebs' in particular, where we don't have intonation and don't know each other. FWIW, I wasn't being mad or anything. I just read your post in a different way than you meant it and as I explain above I think it's absolutely possible to read it that way. Everything else is just following from that and the thread you're replying in here has almost nothing to do with you any more and is just trap_goes_hot going on some tangent and me replying to the trolling more than your topic.
I spontaneously laughed at the moldy cookie thing and I almost had to upvote him/her for that lol!