Dragoljub <dragol...@gmail.com> added the comment:

@cgohlke compared the statement df2 = pd.read_csv(csv) on Python 3.7.0a3 and a4 
in the Visual Studio profiler. The culprit is the isdigit function called in 
the parsers extension module. On 3.7.0a3 the function is fast at ~8% of 
samples. On 3.7.0a4 the function is slow at ~64% samples because it calls the 
_isdigit_l function, which seems to update and restore the locale in the 
current thread every time...

3.7.0a3:
Function Name   Inclusive Samples       Exclusive Samples       Inclusive 
Samples %     Exclusive Samples %     Module Name
 + [parsers.cp37-win_amd64.pyd] 705     347     28.52%  14.04%  
parsers.cp37-win_amd64.pyd
   isdigit      207     207     8.37%   8.37%   ucrtbase.dll
 - _errno       105     39      4.25%   1.58%   ucrtbase.dll
   toupper      24      24      0.97%   0.97%   ucrtbase.dll
   isspace      21      21      0.85%   0.85%   ucrtbase.dll
   [python37.dll]       1       1       0.04%   0.04%   python37.dll
3.7.0a4:
Function Name   Inclusive Samples       Exclusive Samples       Inclusive 
Samples %     Exclusive Samples %     Module Name
 + [parsers.cp37-win_amd64.pyd] 8,613   478     83.04%  4.61%   
parsers.cp37-win_amd64.pyd
 + isdigit      6,642   208     64.04%  2.01%   ucrtbase.dll
 + _isdigit_l   6,434   245     62.03%  2.36%   ucrtbase.dll
 + _LocaleUpdate::_LocaleUpdate 5,806   947     55.98%  9.13%   ucrtbase.dll
 + __acrt_getptd        2,121   1,031   20.45%  9.94%   ucrtbase.dll
   FlsGetValue  647     647     6.24%   6.24%   KernelBase.dll
 - RtlSetLastWin32Error 296     235     2.85%   2.27%   ntdll.dll
   _guard_dispatch_icall_nop    101     101     0.97%   0.97%   ucrtbase.dll
   GetLastError 46      46      0.44%   0.44%   KernelBase.dll
 + __acrt_update_multibyte_info 1,475   246     14.22%  2.37%   ucrtbase.dll
 - __crt_state_management::get_current_state_index      1,229   513     11.85%  
4.95%   ucrtbase.dll
 + __acrt_update_locale_info    1,263   235     12.18%  2.27%   ucrtbase.dll
 - __crt_state_management::get_current_state_index      1,028   429     9.91%   
4.14%   ucrtbase.dll
   _ischartype_l        383     383     3.69%   3.69%   ucrtbase.dll

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue35195>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to