[Monterey] [MacOS 12] Large slowdown experienced on Monterey

Hi all,

Since Monterey was released, our application on Monterey has become noticeably slow constantly, with all actions that the user takes being much slower.

We did side-by-side testing on the same build on different OS versions, 10.15 / 11 / 12. Both 10.15 and 11 was smooth, but 12 was much slower.

We created basic Xojo apps to test the speed different. Note: the 10.15 vs 12 macs are identical spec, both purchased on the same day, one has been upgraded and the other has not.

Built with Xojo 2021r1.1 and Xojo 2021r3, same results with both versions.

  1. Recursive app:

Link: https://drive.google.com/file/d/1534DCxpAZEeE70U_YLrpiMtONU4ahstZ/view?usp=sharing

A simple app that calls a single function, often recursively

MacOS 12 took: 4 seconds
MacOS 10.15 took: 0.9 seconds

  1. Dictionary Lookup results:

Link: https://drive.google.com/file/d/10MoLLlrVPvYNGdFDlaAgphbGB6X0HqwF/view?usp=sharing

A simple app that calls dictionary.lookup 100,000 times

MacOS 12 took: 0.2 seconds
MacOS 10.15 took: 0.07 seconds

Has anyone else experienced this?

Additional notes:

  • I am unable to access Xojo feedback and it crashes on launch every time.
  • Adding in pragma for the functions greatly increases the speed on MacOS 10.15, but not on MacOS 12

This is currently affecting ~100,000 of our users.

I look forward to hearing any feedback!

I’ve not noticed massive slowdowns in compiled code. What version(s) of Xojo are you building/testing with?

Built with Xojo 2021r1.1 and Xojo 2021r3, same results with both versions

Updated OP with that information

There could be multiple reasons for this that may not be Xojo’s fault.

The most important thing is if the macOS 12 was ‘Upgraded’ or clean installed.

If it was upgraded, Apple are aware that their own ‘Migration Assistant’ (which is used during upgrades) is broken and can cause multiple issues to arise on the upgraded machine, to the point that Apple Care support recommends people to perform slow migrations.

  1. Backup your data.
  2. Write down all your passwords.
  3. Boot into “Recovery” mode.
  4. Wipe SSD.
  5. Install the macOS.
  6. Disable iCloud if not needed or wanted.
  7. Re-install all your apps.
  8. Manually copy back your files (but not apps).
  9. Re-enter all your passwords and re-setup your e-mail, blah, blah, blah.

How would a failed migration of user data affect processor speed? This is totally impossible.

2 Likes

I wouldn’t try to apply logic to it, it may make your head hurt!

But it has / does cause machines to run slowly. The first 16" MBP I got; ran slowly and Apple blamed Migration Assistan. It had other problems and so I sent it back.

Yes with a clean installed it did boot a lot quicker and memory usage was down, compared to migration of my 10.14 system (with no 3rd party extensions or anything of that nature).

Comparing my MacBook Air M1 with macOS 12 (no migration) with my iMac 2018 with High Sierra. The results are really strange:

iMac lookup: 0,08
M1 lookup: 0,27

iMac recursion: 2305077
M1 lookup: 4861078

Xojo 2021r3

1 Like

Thanks for the suggestions Sam,

We have tested on 6 different macs in-house:

4 brand new macs that came with MacOS 12
2 older macs that have been upgraded to MacOS 12

All 6 macs experiences the slow down

1 Like

Beatrix -

Thanks for testing, Its greatly appreciated!

It looks like you are also seeing the same results as us with MacOS 12.

I will look into more simple tests today to hopefully shed some light on the issue

Thanks again

Have you tried peeking into the underbelly with Instruments? I really can’t imagine Xojo doing something odd with macOS for such simple code. But it doesn’t hurt to check.

That’s a good idea, We did with our main application but not with the test projects.

Ill profile and post the results

Thanks again

Let me know if you want me to do a Feedback report. For me Feedback mostly works.

Yes please Beatrix, That would be greatly appreciated!

Here are the profiles for a built version of the app, both profiles are one test:

MacOS 10.15:

MacOS 12:

The profiling does spot out a few new functions that are taking quite some time, and appear to be the majority of the time

1 Like

<https://xojo.com/issue/66843>

66843 - Slow code execution on Monterey for dictionary and recursion:

Steps: More info is at [Monterey] [MacOS 12] Large slowdown experienced on Monterey - #14 by Connor_Blackler . I’m writing the Feedback case for Connor Blackler because Feedback crashes for him.

Run attached projects. There is one for a dictionary and one for recursion. I can only do tests on an iMac from 2018 with High Sierra and a MacBook Air M1. Normally, the Air is just a bit slower than the iMac.

The dictionary tests show that on Monterey the code is executed about 50% slower than on High Sierra. The execution time is even worse with Rosetta.

With the built app I wasn’t able to reproduce the behaviour for the recursion. But even here the difference between ARM and Rosetta seems high.

1 Like

Thank you very much for the feedback case Beatrix :slight_smile:

2 Likes

Gotchya, just checking. Thankfully I only have one Mac on Monterey :slight_smile:

1 Like

I had the impression Monterey was slower, but I had not done any benchmark yet. Thank you for evidencing that.

2 Likes

This is just a guess, based on observation. Maybe Monterey introduced new APIs and created a new compatibility layer for softwares not “Monterey+” upgraded yet, that translates old calls to those supposed new system calls (specially those related to partitioning/security/allocation/deallocation/lookup, etc of memory). So, I see 2 possibilities:

  1. Maybe we are using apps in some sort of “legacy mode” in Monterey+, or…
  2. Monterey is messed and naturally underperforms as is.
1 Like

We do know that Monterey has multiple memory leaks More memory leaks in Monterey 12.0.1: how to avoid them – The Eclectic Light Company

I’m not sure of a Monterey + mode, but I do believe that UIKit is pretty going to be the only UI framework that Apple will support in the future.

1 Like