{"action":"created","issue":{"url":"https://api.github.com/repos/rstudio/rstudio/issues/1771","repository_url":"https://api.github.com/repos/rstudio/rstudio","labels_url":"https://api.github.com/repos/rstudio/rstudio/issues/1771/labels{/name}","comments_url":"https://api.github.com/repos/rstudio/rstudio/issues/1771/comments","events_url":"https://api.github.com/repos/rstudio/rstudio/issues/1771/events","html_url":"https://github.com/rstudio/rstudio/issues/1771","id":275551678,"number":1771,"title":"RStudio View() slow with very wide data (>100 columns)","user":{"login":"jmcphers","id":470418,"avatar_url":"https://avatars3.githubusercontent.com/u/470418?v=4","gravatar_id":"","url":"https://api.github.com/users/jmcphers","html_url":"https://github.com/jmcphers","followers_url":"https://api.github.com/users/jmcphers/followers","following_url":"https://api.github.com/users/jmcphers/following{/other_user}","gists_url":"https://api.github.com/users/jmcphers/gists{/gist_id}","starred_url":"https://api.github.com/users/jmcphers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmcphers/subscriptions","organizations_url":"https://api.github.com/users/jmcphers/orgs","repos_url":"https://api.github.com/users/jmcphers/repos","events_url":"https://api.github.com/users/jmcphers/events{/privacy}","received_events_url":"https://api.github.com/users/jmcphers/received_events","type":"User","site_admin":false},"labels":[{"id":708758451,"url":"https://api.github.com/repos/rstudio/rstudio/labels/bug","name":"bug","color":"d93f0b","default":true}],"state":"open","locked":false,"assignee":{"login":"jmcphers","id":470418,"avatar_url":"https://avatars3.githubusercontent.com/u/470418?v=4","gravatar_id":"","url":"https://api.github.com/users/jmcphers","html_url":"https://github.com/jmcphers","followers_url":"https://api.github.com/users/jmcphers/followers","following_url":"https://api.github.com/users/jmcphers/following{/other_user}","gists_url":"https://api.github.com/users/jmcphers/gists{/gist_id}","starred_url":"https://api.github.com/users/jmcphers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmcphers/subscriptions","organizations_url":"https://api.github.com/users/jmcphers/orgs","repos_url":"https://api.github.com/users/jmcphers/repos","events_url":"https://api.github.com/users/jmcphers/events{/privacy}","received_events_url":"https://api.github.com/users/jmcphers/received_events","type":"User","site_admin":false},"assignees":[{"login":"jmcphers","id":470418,"avatar_url":"https://avatars3.githubusercontent.com/u/470418?v=4","gravatar_id":"","url":"https://api.github.com/users/jmcphers","html_url":"https://github.com/jmcphers","followers_url":"https://api.github.com/users/jmcphers/followers","following_url":"https://api.github.com/users/jmcphers/following{/other_user}","gists_url":"https://api.github.com/users/jmcphers/gists{/gist_id}","starred_url":"https://api.github.com/users/jmcphers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmcphers/subscriptions","organizations_url":"https://api.github.com/users/jmcphers/orgs","repos_url":"https://api.github.com/users/jmcphers/repos","events_url":"https://api.github.com/users/jmcphers/events{/privacy}","received_events_url":"https://api.github.com/users/jmcphers/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/rstudio/rstudio/milestones/3","html_url":"https://github.com/rstudio/rstudio/milestone/3","labels_url":"https://api.github.com/repos/rstudio/rstudio/milestones/3/labels","id":2807856,"number":3,"title":"v1.2","description":"","creator":{"login":"jmcphers","id":470418,"avatar_url":"https://avatars3.githubusercontent.com/u/470418?v=4","gravatar_id":"","url":"https://api.github.com/users/jmcphers","html_url":"https://github.com/jmcphers","followers_url":"https://api.github.com/users/jmcphers/followers","following_url":"https://api.github.com/users/jmcphers/following{/other_user}","gists_url":"https://api.github.com/users/jmcphers/gists{/gist_id}","starred_url":"https://api.github.com/users/jmcphers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmcphers/subscriptions","organizations_url":"https://api.github.com/users/jmcphers/orgs","repos_url":"https://api.github.com/users/jmcphers/repos","events_url":"https://api.github.com/users/jmcphers/events{/privacy}","received_events_url":"https://api.github.com/users/jmcphers/received_events","type":"User","site_admin":false},"open_issues":21,"closed_issues":87,"state":"open","created_at":"2017-10-02T17:08:58Z","updated_at":"2018-04-13T23:41:50Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2017-11-21T01:08:36Z","updated_at":"2018-04-16T16:31:50Z","closed_at":null,"author_association":"MEMBER","body":"We've had a few reports that `View()` can make RStudio very slow when data is very wide. We knew about this performance issue in RStudio 1.0, and so we truncated data to 100 columns in that release in order to keep performance at acceptable levels. \r\n\r\nHowever, many people with wide data indicated that they'd prefer to see all their columns (even if it was slow), so in 1.1 we lifted the 100 column limit. Predictably, it's now slow for wide data. \r\n\r\nThere are a few approaches we could take to addressing this: \r\n\r\n1. Do some performance analysis to see why DataTables (which is the underlying library that renders the data to the DOM) is so slow as the number of columns increase. (We might not be able to do anything about a potential bottleneck without contributing a patch to DataTables.)\r\n\r\n2. Add code to do column virtualization; just as today rows are paged in dynamically, we could show a small set of columns in the DOM and then page in more as the user scrolls left or right. (It may or may not be possible to add columns on the fly smoothly).\r\n\r\n3. Restrict the number of columns visible to a small number (say, 50), and give the user an affordance for manually selecting the columns to view. (This UX might not be ideal.)\r\n\r\n4. Implement the grid using a different library that scales better for wide data. (This would take a long time, but on the other hand we already do so much custom data fetching and rendering that our dependency on DT is smaller than it might seem.)\r\n\r\nNo good options, but wide data is common enough (and performance poor enough) that we should address this in the upcoming release if we can. "},"comment":{"url":"https://api.github.com/repos/rstudio/rstudio/issues/comments/381666650","html_url":"https://github.com/rstudio/rstudio/issues/1771#issuecomment-381666650","issue_url":"https://api.github.com/repos/rstudio/rstudio/issues/1771","id":381666650,"user":{"login":"renkun-ken","id":4662568,"avatar_url":"https://avatars2.githubusercontent.com/u/4662568?v=4","gravatar_id":"","url":"https://api.github.com/users/renkun-ken","html_url":"https://github.com/renkun-ken","followers_url":"https://api.github.com/users/renkun-ken/followers","following_url":"https://api.github.com/users/renkun-ken/following{/other_user}","gists_url":"https://api.github.com/users/renkun-ken/gists{/gist_id}","starred_url":"https://api.github.com/users/renkun-ken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/renkun-ken/subscriptions","organizations_url":"https://api.github.com/users/renkun-ken/orgs","repos_url":"https://api.github.com/users/renkun-ken/repos","events_url":"https://api.github.com/users/renkun-ken/events{/privacy}","received_events_url":"https://api.github.com/users/renkun-ken/received_events","type":"User","site_admin":false},"created_at":"2018-04-16T16:31:50Z","updated_at":"2018-04-16T16:31:50Z","author_association":"NONE","body":"Accidentally click on a big data frame (1M+ rows, tens of columns) can cause RStudio Server hang forever."}}
{"actor":{"display_login":"renkun-ken"}}