Right now, setSelection call in addRange and removeAllRanges forces page layout. We can probably delay that until the selection is rendered or validation is required.
http://crbug.com/138439
What is the status on this bug? This is affecting our editor (orion.eclipse.org) on newer versions of Chrome. The problem started happening on Chrome 22. The performance of addRange() is really bad for long lines. See [1] for more info. https://bugs.eclipse.org/bugs/show_bug.cgi?id=394985