On 4/5/17 13:30, Olivier Trempe wrote:
Absolutely. This will be fixed in V3.
I also realize the "import sys" statement was removed 3 months ago. I missed it when rebasing... This will also be fixed in V3.

Thanks.

In general, do you think you could add a test for the behavior where fsmonitor currently fails? I assume any non-ASCII filenames will cause issues.


>>
>> +
>> +    return decoded.encode(_fsencoding, 'replace')
>> +
>> def overridewalk(orig, self, match, subrepos, unknown, ignored, full=True):
>>       '''Replacement for dirstate.walk, hooking into Watchman.
>>   @@ -303,6 +323,8 @@
>>       # for name case changes.
>>       for entry in result['files']:
>>           fname = entry['name']
>> +        if _fixencoding:
>> +            fname = _watchmantofsencoding(fname)
>
>
> This is a critical path IIRC, so I'm a little concerned about performance here -- both on Mac/Linux where _fixencoding will (always?) be false and on Windows where it will (always?) be true.
>
> Any chance you you could measure the before and after with (say) 10,000 files in the result set? Thanks!
>

There is a little overhead at module import:
python -m timeit "import hgext.fsmonitor"
Windows before patch: 1000000 loops, best of 3: 0.563 usec per loop
Windows after patch: 1000000 loops, best of 3: 0.583 usec per loop
Linx before patch: 1000000 loops, best of 3: 0.628 usec per loop
Linux after patch: 1000000 loops, best of 3: 0.579 usec per loop

10000 calls to _watchmantofsencoding:
python -m timeit -s "from hgext.fsmonitor import _watchmantofsencoding, _fixencoding" "fname = '/path/to/file'" "for i in range(10000):" " if _fixencoding: fname = _watchmantofsencoding(fname)"
Windows (_fixencoding is True): 100 loops, best of 3: 19.5 msec per loop
Linux (_fixencoding is False): 100 loops, best of 3: 3.08 msec per loop

Do you want me to include these results in the commit message?

Yes, that would be great! Thanks.


>
>>           if switch_slashes:
>>               fname = fname.replace('\\', '/')
>>           if normalize:
>
>
>


_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to