PERF: speed up MPLPlot._apply_axis_properties by skipping expensive tick enumeration where feasible
State: closed

This issue likely originates in `matplotlib`, as it seems enumeration of `axis.majorTicks` frequently requires re-creating all of the ticks. We sidestep that here by only enumerating the labels if we will mutate them; in particular, this is beneficial to `MPLPlot._post_plot_logic_common()`.

```
asv compare upstream/master HEAD -s --sort ratio

Benchmarks that have improved:

       before           after         ratio
     [63755498]       [eb051291]
     <plot_perf~1>       <plot_perf>
-      67.0±0.8ms       57.4±0.4ms     0.86  plotting.FramePlotting.time_frame_plot('hexbin')
-        61.1±2ms       50.3±0.7ms     0.82  plotting.FramePlotting.time_frame_plot('scatter')
-      48.3±0.2ms       39.6±0.2ms     0.82  plotting.TimeseriesPlotting.time_plot_regular_compat
-        52.3±2ms       42.2±0.4ms     0.81  plotting.TimeseriesPlotting.time_plot_irregular

Benchmarks that have stayed the same:

       before           after         ratio
     [63755498]       [eb051291]
     <plot_perf~1>       <plot_perf>
          171±4ms          175±5ms     1.02  plotting.SeriesPlotting.time_series_plot('hist')
       92.9±0.2ms       94.1±0.2ms     1.01  plotting.SeriesPlotting.time_series_plot('pie')
        143±0.2ms        144±0.2ms     1.01  plotting.FramePlotting.time_frame_plot('pie')
          851±6ms          844±6ms     0.99  plotting.FramePlotting.time_frame_plot('kde')
       1.97±0.02s       1.94±0.01s     0.99  plotting.TimeseriesPlotting.time_plot_table
        1.20±0.1s        1.18±0.1s     0.99  plotting.Misc.time_plot_andrews_curves
         80.1±5ms         78.7±6ms     0.98  plotting.SeriesPlotting.time_series_plot('line')
         736±10ms         723±10ms     0.98  plotting.SeriesPlotting.time_series_plot('kde')
        193±0.2ms          190±1ms     0.98  plotting.FramePlotting.time_frame_plot('barh')
       87.6±0.3ms       85.7±0.3ms     0.98  plotting.SeriesPlotting.time_series_plot('bar')
          208±5ms          203±3ms     0.98  plotting.FramePlotting.time_frame_plot('area')
       87.5±0.4ms       85.5±0.6ms     0.98  plotting.SeriesPlotting.time_series_plot('barh')
          199±5ms          192±2ms     0.96  plotting.SeriesPlotting.time_series_plot('area')
        196±0.8ms        189±0.4ms     0.96  plotting.FramePlotting.time_frame_plot('bar')
       91.3±0.4ms        86.9±10ms     0.95  plotting.FramePlotting.time_frame_plot('line')
          201±2ms          191±3ms     0.95  plotting.FramePlotting.time_frame_plot('hist')
       83.5±0.2ms         76.7±1ms     0.92  plotting.TimeseriesPlotting.time_plot_regular

```

- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry


Labels:
name: Visualization
description: plotting
name: Performance
description: Memory or execution speed performance

Comments:
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/25665?src=pr&el=h1) Report
> Merging [#25665](https://codecov.io/gh/pandas-dev/pandas/pull/25665?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/10173821965fa65654b172891b2102a8426132ca?src=pr&el=desc) will **increase** coverage by `<.01%`.
> The diff coverage is `100%`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/25665/graphs/tree.svg?width=650&token=eZ4WkYLtcO&height=150&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/25665?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master   #25665      +/-   ##
==========================================
+ Coverage   91.24%   91.24%   +<.01%     
==========================================
  Files         172      172              
  Lines       52967    52968       +1     
==========================================
+ Hits        48332    48333       +1     
  Misses       4635     4635
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `89.82% <100%> (ø)` | :arrow_up: |
| #single | `41.74% <0%> (-0.01%)` | :arrow_down: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/25665?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/plotting/\_core.py](https://codecov.io/gh/pandas-dev/pandas/pull/25665/diff?src=pr&el=tree#diff-cGFuZGFzL3Bsb3R0aW5nL19jb3JlLnB5) | `83.55% <100%> (+0.01%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/25665?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/25665?src=pr&el=footer). Last update [1017382...5962817](https://codecov.io/gh/pandas-dev/pandas/pull/25665?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

Thanks @qwhelan!