PERF: ascii c string functions
State: closed

- [x] closes #23516
- [ ] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

This ends up being kind of hairy - open to suggestions on a better fix.  cc @dragoljub, @cgohlke 

Timings

```python
df = pd.DataFrame(np.random.randn(1000000, 10), 
    columns=('COL{}'.format(i) for i in range(10)))
df.to_csv('~/tmp.csv')

# python 3.6 - pandas 0.23.4
In [1]: %timeit pd.read_csv('~/tmp.csv')
4.55 s ± 344 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

# python 3.7 - before
In [3]: %timeit pd.read_csv('~/tmp.csv')
21.8 s ± 769 ms per loop (mean ± std. dev. of 7 runs, 1 loop ea

# python 3.7 - after
In [1]: %timeit pd.read_csv('~/tmp.csv')
4.25 s ± 168 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
```

Labels:
name: Performance
description: Memory or execution speed performance
name: Windows
description: Windows OS

Comments:
Hello @chris-b1! Thanks for submitting the PR.

 - There are no PEP8 issues in the file [`pandas/_version.py`](https://github.com/chris-b1/pandas/blob/6ef415532d180832219242ae623f7d4e1438a9d7/pandas/_version.py) !


can you add a whatsnew note in perf
@chris-b1 great work! 👍 The simple fix always seems to add a few more layers of complexity.

Can someone build/try this on Linux to make sure there is no regression there? 😉 
Did tracking this problem down give any insight into whether/when we can de-duplicate parse_helper.xstrtod and tokenizer.xstrtod?
@chris-b1 I think you have some linting errors, can you also rebase on master & add a whatsnew

```
andas/_libs/src/parser/tokenizer.c:26:  At least two spaces is best between code and comments  [whitespace/comments] [2]
```
@jbrockmendel - It will take a bit of refactoring to deal with the `maybe_int` out param - the parse_helper one needs its, the csv parsing one doesn't.  Will have that as a follow-up, have #19361 on it.
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/23981?src=pr&el=h1) Report
> Merging [#23981](https://codecov.io/gh/pandas-dev/pandas/pull/23981?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/08395af43b813b69b1cf038d260104cfeeb3e787?src=pr&el=desc) will **not change** coverage.
> The diff coverage is `n/a`.

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

```diff
@@           Coverage Diff           @@
##           master   #23981   +/-   ##
=======================================
  Coverage   42.38%   42.38%           
=======================================
  Files         161      161           
  Lines       51701    51701           
=======================================
  Hits        21914    21914           
  Misses      29787    29787
```

| Flag | Coverage Δ | |
|---|---|---|
| #single | `42.38% <ø> (ø)` | :arrow_up: |


------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/23981?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/23981?src=pr&el=footer). Last update [08395af...8af538f](https://codecov.io/gh/pandas-dev/pandas/pull/23981?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/23981?src=pr&el=h1) Report
> Merging [#23981](https://codecov.io/gh/pandas-dev/pandas/pull/23981?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/9f2c7164ec581a484ee167c04478bf9e4f81426b?src=pr&el=desc) will **decrease** coverage by `<.01%`.
> The diff coverage is `n/a`.

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

```diff
@@            Coverage Diff             @@
##           master   #23981      +/-   ##
==========================================
- Coverage    92.2%    92.2%   -0.01%     
==========================================
  Files         162      162              
  Lines       51714    51714              
==========================================
- Hits        47682    47681       -1     
- Misses       4032     4033       +1
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `90.6% <ø> (ø)` | :arrow_up: |
| #single | `43.01% <ø> (-0.01%)` | :arrow_down: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/23981?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/io/json/json.py](https://codecov.io/gh/pandas-dev/pandas/pull/23981/diff?src=pr&el=tree#diff-cGFuZGFzL2lvL2pzb24vanNvbi5weQ==) | `92.61% <0%> (-0.48%)` | :arrow_down: |
| [pandas/util/testing.py](https://codecov.io/gh/pandas-dev/pandas/pull/23981/diff?src=pr&el=tree#diff-cGFuZGFzL3V0aWwvdGVzdGluZy5weQ==) | `87.51% <0%> (+0.09%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/23981?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/23981?src=pr&el=footer). Last update [9f2c716...5abc57d](https://codecov.io/gh/pandas-dev/pandas/pull/23981?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

can you merge master and push again.
@chris-b1 this will fail on 3.6 build (fix was just merged), but ping when ready otherwise.
@jreback - other than CI issues, I think this is good to go?
yeah just waiting for a good ci run (don't rebase yet).
looks like ci is fixed up, can you rebase
thanks @chris-b1