Giter VIP home page Giter VIP logo

layoutframeworkbenchmark's Introduction

FlexLayout

Layout Framework Benchmark


Benchmark the performances of various Swift layout frameworks.

Requirements

  • iOS 8.0+
  • Xcode 8.0+
  • Swift 3.0+

History

This project is a spin-off of the excellent LayoutKit benchmark. The benchmark has been extracted to add other iOS layout frameworks and to compare them.


Why?

Choosing the right layout framework for your project is an important decision. The frameworks API is quite important, but its performance is also important. To help you with that decision, this benchmark compare different layout frameworks.


Benchmark charts

General comparison

This chart display a general comparison between device performance using each layout frameworks. It displays the performance when layouting UICollectionView cells. This graph shows performance when layouting 100 UICollectionView cells.

The Y axis indicates the number of seconds to render all cells.


Layout frameworks

The benchmark currently includes the following layout frameworks:
(ordered alphabetically and use the framework GitHub's description):

๐Ÿ“Œ Anyone who would like to integrate any other layout frameworks to this GitHub project is welcome.


Benchmark details

The benchmark layout UICollectionView cells in multiple pass, each pass contains more cells than the previous one.

Benchmark cell's layout

Here are the benchmark rendering results to compare visual results:

๐Ÿ“Œ Some work would be required to adjust the layout so that they all match perfectly.


Benchmark data

You can see the benchmark's data and charts in this Google Spreadsheet Document.


Details for different devices

The X axis in following charts indicates the number of cells contained for each pass. The Y axis indicates the number of seconds to render all cells from one pass.






Project's TODO list

  • Create a reference layout and update layout codes to match that reference.
  • Display benchmark charts inside the app and being to able to export them.
  • Export benchmark data to a spreadsheet.
  • Add more layout frameworks.
  • OSX support.
  • tvOS support.
  • ...

Contributing, comments, ideas, suggestions, issues, ....

For any comments, ideas, suggestions, simply open an issue.

If you'd like to contribute by adding other layout framework, you're welcomed!


Adding another layout framework

The process is currently tedious...

  • Add an implementation of the reference view.
  • Run on all reference devices (or at least the two latest generation) in Release mode.
  • Select the new layout from the Benchmark App.
  • Update the XLSX document.
  • Add a new chart
  • Save the chart using "Save as Picture..."
  • Update the README.md
  • Create a pull request.

License

BSD 3-Clause License

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.