It turns out the fonts aren’t really the problem. It starts with this gem in wxWidgets:
void wxWidgetCocoaImpl::ScrollRect( const wxRect *rect, int dx, int dy ) { #if 1 SetNeedsDisplay() ; #else // We should do something like this, but it wasn't working in 10.4. if (GetNeedsDisplay() ) { SetNeedsDisplay() ; } NSRect r = wxToNSRect( [m_osxView superview], *rect ); NSSize offset = NSMakeSize((float)dx, (float)dy); [m_osxView scrollRect:r by:offset]; #endif } SetNeedsDisplay() with no rectangle argument invalidates the entire window. Even if you fix that (to scroll most of the window and only invalidate the newly-exposed parts), you run into this: void wxWidgetCocoaImpl::drawRect(void* rect, WXWidget slf, void *WXUNUSED(_cmd)) { // preparing the update region wxRegion updateRgn; // since adding many rects to a region is a costly process, by default use the bounding rect #if 0 const NSRect *rects; NSInteger count; [slf getRectsBeingDrawn:&rects count:&count]; for ( int i = 0 ; i < count ; ++i ) { updateRgn.Union(wxFromNSRect(slf, rects[i])); } #else updateRgn.Union(wxFromNSRect(slf,*(NSRect*)rect)); #endif …which will also cause the whole window to be repainted if there’s both an invalidated horizontal strip and a vertical one. And the latter turns out to be pretty much guaranteed by this one, which batches repaints: void wxNonOwnedWindow::Update() { if ( clock() - s_lastFlush > CLOCKS_PER_SEC / 30 ) { s_lastFlush = clock(); m_nowpeer->Update(); } } But even Kicad isn’t blameless. Once you fix all those there’s still no checking in SCH_SCREEN::Draw() to see if the individual draw items intersect the update region. (Sure, the actually drawing is clipped in the end, but you still go through a lot of code to get there.) All of these are fixable, and we’ve already crossed the Rubicon of having our own OSX wxWidgets branch. But it’s still a reasonable amount of work, with a non-trivial risk profile. Should I continue? Cheers, Jeff. > On 4 Mar 2018, at 01:30, Bernhard Stegmaier <stegma...@sw-systems.de> wrote: > > No. > >> On 4. Mar 2018, at 01:51, Andrey Kuznetsov <kandre...@gmail.com >> <mailto:kandre...@gmail.com>> wrote: >> >> Would it be an easy fix to change the text/font such that it does not affect >> performance so significantly on MacOS? >> >> On Sat, Mar 3, 2018 at 5:20 AM, Wayne Stambaugh <stambau...@gmail.com >> <mailto:stambau...@gmail.com>> wrote: >> On 03/03/2018 07:33 AM, Jeff Young wrote: >> Hi Andrey, >> >> I did some profiling and I’d guess that the difference in eeschema and >> pcbnew-legacy performance is down to there being more text in the schema. >> Since we use a stroke font, there’s a lot of stroke segments in each letter. >> >> @Devs, >> >> I understand why we use a stroke font on the PCB, but there’s not much >> reason in eeschema, is there? >> >> This is possibly one of the things that I plan on changing after the new >> schematic file format is written. The new file format will support font >> definitions so replacing the stroke font in Eeschema should be doable. >> Whether or not I have time to make this change remains to be seen. >> >> Wayne >> >> >> Cheers, >> Jeff. >> >> >> On 3 Mar 2018, at 08:18, Andrey Kuznetsov <kandre...@gmail.com >> <mailto:kandre...@gmail.com> <mailto:kandre...@gmail.com >> <mailto:kandre...@gmail.com>>> wrote: >> >> The motherboard project is not very complex, I would say that performance >> should be tolerable UP to that size complexity, if we set the bar any lower, >> usability will suffer and people won't like KiCad because it's sluggish and >> interface lag is the worst kind of lag. >> My project isn't finished and Chris' project is available now, is just the >> right complexity and has layout that can be used for testing as well as a >> schematic. >> >> *LG 5K 27" display running 3200x1800 (the highest resolution without making >> text blurry, using this for work every day, so it's extravagant, it's >> practical)* >> >> *Actions:* pan with middle mouse, zoom back and forth. >> >> *eeschema:* >> Low Res - at least 2 times slower than would be considered normal, I would >> have to guess ~400ms lag >> Normal - 4-5x slower compared to low res mode ~1700ms lag >> Even in low res mode, and removing 75% of the items from Chris' schematic, >> the lag is still ~200-300ms, that's just not right. Additionally, I filed >> https://bugs.launchpad.net/kicad/+bug/1753054 >> <https://bugs.launchpad.net/kicad/+bug/1753054> because the mouse zoom is >> screwed up in eeschema, coupled with the lag, it's unusable. Maybe the pan >> lag is related to the zoom, maybe there are multiple steps being rendered >> when it should just jump to where the mouse ended up at, I don't know. >> >> *pcbnew - **Normal Resolution:* >> Accelerated: No-AA, <50ms >> Fallback: 500-1000ms for panning, 300-600ms for zoom >> Legacy: 1300-1700ms for panning, 600ms for zoom >> Low Res mode: did not notice speed increase, except maybe Fallback was >> ~400ms faster. >> >> I'm not saying halt the horses, certain modes are obviously limited, ie >> Legacy and Fallback by the nature of the task presented, but eeschema is >> barely displaying 10% of the content pcbnew is but lagging so much worse! >> >> Just thought I'd include rendering of the Accelerated Graphics (top to >> bottom: Supersampling 4x, Subpixel AA (Ultra Quality), No AA) >> All 3 modes are responsive, probably <50-100ms lag, I'd consider this >> performance great, considering the amount of elements on screen. >> <image.png> >> >> How long should it take to delete this many selected elements in pcbnew? >> Answer: about 50x too long! I think it was like 3mins, perhaps ESC key >> should be available to press anytime to undo the delete action and restore >> to pre-delete screen when accidental actions are triggered that take forever >> to complete? >> <image.png> >> >> On Fri, Mar 2, 2018 at 9:53 AM, Bernhard Stegmaier <stegma...@sw-systems.de >> <mailto:stegma...@sw-systems.de> <mailto:stegma...@sw-systems.de >> <mailto:stegma...@sw-systems.de>>> wrote: >> >> Hi, >> >> to be honest, I don’t really know what this is about. >> >> @Andrey: >> You looked for a very complex (foreign) project (Chris mainboard?) >> to prove that eeschema is slow on Mac? >> Well, we know that and we told you already some weeks/months ago >> why it is like it is (if memory serves me right). >> >> Or, do you have an own project that is so ridiculously slow, that >> you can’t work with it? >> If so, please provide it so that we can analyse why this specific >> project behaves like that. >> If you can’t or don’t want to provide it we could tell you how to >> do some performance measurements so that we might see something. >> >> Obviously, there are a number of Mac users here and also over at >> the KiCad forum who might also be happy to get some more >> performance here and there, but who are in general reasonably able >> to work on their projects (including myself, on a 2012 Retina >> MacBook with only an i5). >> >> >> Regards, >> Bernhard >> >> > On 2. Mar 2018, at 17:59, Andy Peters <de...@latke.net >> <mailto:de...@latke.net> >> <mailto:de...@latke.net <mailto:de...@latke.net>>> wrote: >> > >> > >> > >> >> On Mar 1, 2018, at 8:53 PM, Seth Hillbrand >> <seth.hillbr...@gmail.com <mailto:seth.hillbr...@gmail.com> >> <mailto:seth.hillbr...@gmail.com <mailto:seth.hillbr...@gmail.com>>> wrote: >> >> >> >> Andrey- >> >> >> >> I'm moving this to a new thread so that we don't conflate the >> OpenMP discussion with this. >> >> >> >> Can you test running Kicad with the "Open in Low Resolution" >> mode enabled? You can activate this by choosing "Get Info" on the >> main KiCad application and checking the option that says "Open in >> Low Resolution". You may need to do the same for the other >> applications (Eeschema, pcbnew, etc) as well. >> > >> > testing on my 2017” touch-bar MBP … >> > >> > Good g-d, low-res mode looks fuzzy and weird! >> > >> > I don’t notice any specific differences in EESchema performance. >> Maybe my schematic isn’t busy enough? I’m a fan of using more >> smaller sheets with less info on each than one big sheet with >> everything. >> > >> > I know, anecdote is not evidence. >> > >> > -a >> > >> > >> >> >> >> -Seth >> >> >> >> 2018-03-01 18:09 GMT-08:00 Andrey Kuznetsov >> <kandre...@gmail.com <mailto:kandre...@gmail.com> >> <mailto:kandre...@gmail.com <mailto:kandre...@gmail.com>>>: >> >> Hi, >> >> >> >> So for now I've had a chance to test the motherboard project on >> my Retina macbook display. >> >> eeschema: horrible zoom, feels like elastic band zoom and I >> have all scroll wheel accelerations and similar disabled, zoom >> response is super laggy, cannot work like this, will need to make >> schematics on windows. >> >> pcbnew by order of slowness: >> >> legacy - pretty slow, zoom lag is major, boo boo >> >> modern (fallback) - decent, but the lag can be felt, zoom lag >> is minor >> >> modern (accelerated) - almost cannot feel the lag, very nice, >> nice zoom responsiveness >> >> >> >> I'll report tomorrow on 5K LG display. >> >> >> > >> > >> > _______________________________________________ >> > Mailing list: https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers> >> <https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers>> >> > Post to : kicad-developers@lists.launchpad.net >> <mailto:kicad-developers@lists.launchpad.net> >> <mailto:kicad-developers@lists.launchpad.net >> <mailto:kicad-developers@lists.launchpad.net>> >> > Unsubscribe : https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers> >> <https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers>> >> > More help : https://help.launchpad.net/ListHelp >> <https://help.launchpad.net/ListHelp> >> <https://help.launchpad.net/ListHelp >> <https://help.launchpad.net/ListHelp>> >> >> >> _______________________________________________ >> Mailing list: https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers> >> <https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers>> >> Post to : kicad-developers@lists.launchpad.net >> <mailto:kicad-developers@lists.launchpad.net> >> <mailto:kicad-developers@lists.launchpad.net >> <mailto:kicad-developers@lists.launchpad.net>> >> Unsubscribe : https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers> >> <https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers>> >> More help : https://help.launchpad.net/ListHelp >> <https://help.launchpad.net/ListHelp> >> <https://help.launchpad.net/ListHelp >> <https://help.launchpad.net/ListHelp>> >> >> >> >> >> -- >> Remember The Past, Live The Present, Change The Future >> Those who look only to the past or the present are certain to miss the >> future [JFK] >> >> kandre...@gmail.com <mailto:kandre...@gmail.com> <mailto:kandre...@gmail.com >> <mailto:kandre...@gmail.com>> >> Live Long and Prosper, >> Andrey >> _______________________________________________ >> Mailing list: https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers> >> Post to : kicad-developers@lists.launchpad.net >> <mailto:kicad-developers@lists.launchpad.net> >> <mailto:kicad-developers@lists.launchpad.net >> <mailto:kicad-developers@lists.launchpad.net>> >> Unsubscribe : https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers> >> More help : https://help.launchpad.net/ListHelp >> <https://help.launchpad.net/ListHelp> >> >> >> >> _______________________________________________ >> Mailing list: https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers> >> Post to : kicad-developers@lists.launchpad.net >> <mailto:kicad-developers@lists.launchpad.net> >> Unsubscribe : https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers> >> More help : https://help.launchpad.net/ListHelp >> <https://help.launchpad.net/ListHelp> >> >> >> _______________________________________________ >> Mailing list: https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers> >> Post to : kicad-developers@lists.launchpad.net >> <mailto:kicad-developers@lists.launchpad.net> >> Unsubscribe : https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers> >> More help : https://help.launchpad.net/ListHelp >> <https://help.launchpad.net/ListHelp> >> >> >> >> -- >> Remember The Past, Live The Present, Change The Future >> Those who look only to the past or the present are certain to miss the >> future [JFK] >> >> kandre...@gmail.com <mailto:kandre...@gmail.com> >> Live Long and Prosper, >> Andrey >> _______________________________________________ >> Mailing list: https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers> >> Post to : kicad-developers@lists.launchpad.net >> <mailto:kicad-developers@lists.launchpad.net> >> Unsubscribe : https://launchpad.net/~kicad-developers >> <https://launchpad.net/~kicad-developers> >> More help : https://help.launchpad.net/ListHelp >> <https://help.launchpad.net/ListHelp> > > _______________________________________________ > Mailing list: https://launchpad.net/~kicad-developers > Post to : kicad-developers@lists.launchpad.net > Unsubscribe : https://launchpad.net/~kicad-developers > More help : https://help.launchpad.net/ListHelp
_______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : kicad-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp