- Published on
CircleCI M1 Mac performance comparison
- Authors
 - Name
- Tadashi Nemoto
- @tadashi-nemoto
 
 

This article presents a performance comparison of the M1 Mac resource class released by CircleCI.
Build on Apple silicon with M1 support for CI/CD pipelines | CircleCI
Target application
GitHub - tadashi0713/circleci-duckduckgo-ios: CircleCI Demo of DuckDuckGo iOS Application
This repository was created by Forking the following DuckDuckGo iOS app (browser app).
GitHub - duckduckgo/iOS: DuckDuckGo iOS Application
This demo has the following 3 jobs:
- unit_test(Running unit tests)
- integration_test(Running integration tests / UI tests)
- build(Building without code signing)
This is the CircleCI config file(.circleci/config.yml).
version: 2.1
orbs:
  ruby: circleci/ruby@2.0.0
  macos: circleci/macos@2.3.4
executors:
  gen2_medium:
    macos:
      xcode: 14.2.0
    resource_class: macos.x86.medium.gen2
  m1_large:
    macos:
      xcode: 14.2.0
    resource_class: macos.m1.large.gen1
jobs:
  unit_test:
    parameters:
      executor:
        type: executor
    executor: << parameters.executor >>
    steps:
      - macos/preboot-simulator:
          device: iPhone 14
          version: '16.2'
      - checkout
      - run: git submodule update --init --recursive
      - ruby/install-deps
      - run: bundle exec fastlane unit_tests
      - store_test_results:
          path: fastlane/report.xml
  integration_test:
    parameters:
      executor:
        type: executor
    executor: << parameters.executor >>
    steps:
      - macos/preboot-simulator:
          device: iPhone 14
          version: '16.2'
      - checkout
      - run: git submodule update --init --recursive
      - ruby/install-deps
      - run: bundle exec fastlane integration_tests
      - run: bundle exec fastlane atb_uitests
      - store_test_results:
          path: fastlane/report.xml
  build:
    parameters:
      executor:
        type: executor
    executor: << parameters.executor >>
    steps:
      - checkout
      - run: git submodule update --init --recursive
      - ruby/install-deps
      - run: bundle exec fastlane build
workflows:
  m1_large_workflow:
    jobs:
      - unit_test:
          executor: m1_large
      - integration_test:
          executor: m1_large
      - build:
          executor: m1_large
  gen2_medium_workflow:
    jobs:
      - unit_test:
          executor: gen2_medium
      - integration_test:
          executor: gen2_medium
      - build:
          executor: gen2_medium
Medium Gen 2
- Intel processor
- 4 CPU @ 3.2 GHZ
- 8 GB RAM
Workflow duration

CPU/RAM usage

M1 Large
- Apple silicon
- 8CPU
- 12GB RAM
Workflow duration

CPU/RAM usage
