{"action":"closed","issue":{"url":"https://api.github.com/repos/Pi4J/pi4j/issues/158","labels_url":"https://api.github.com/repos/Pi4J/pi4j/issues/158/labels{/name}","comments_url":"https://api.github.com/repos/Pi4J/pi4j/issues/158/comments","events_url":"https://api.github.com/repos/Pi4J/pi4j/issues/158/events","html_url":"https://github.com/Pi4J/pi4j/issues/158","id":73719358,"number":158,"title":"GPIOs too slow - RaspiGpioProvider.hasPin() needs improvement","user":{"login":"trim09","id":12280871,"avatar_url":"https://avatars.githubusercontent.com/u/12280871?v=3","gravatar_id":"","url":"https://api.github.com/users/trim09","html_url":"https://github.com/trim09","followers_url":"https://api.github.com/users/trim09/followers","following_url":"https://api.github.com/users/trim09/following{/other_user}","gists_url":"https://api.github.com/users/trim09/gists{/gist_id}","starred_url":"https://api.github.com/users/trim09/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trim09/subscriptions","organizations_url":"https://api.github.com/users/trim09/orgs","repos_url":"https://api.github.com/users/trim09/repos","events_url":"https://api.github.com/users/trim09/events{/privacy}","received_events_url":"https://api.github.com/users/trim09/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/Pi4J/pi4j/labels/bug","name":"bug","color":"fc2929"}],"state":"closed","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/Pi4J/pi4j/milestones/7","html_url":"https://github.com/Pi4J/pi4j/milestones/RELEASE%201.1","labels_url":"https://api.github.com/repos/Pi4J/pi4j/milestones/7/labels","id":980255,"number":7,"title":"RELEASE 1.1","description":"","creator":{"login":"savageautomate","id":2251458,"avatar_url":"https://avatars.githubusercontent.com/u/2251458?v=3","gravatar_id":"","url":"https://api.github.com/users/savageautomate","html_url":"https://github.com/savageautomate","followers_url":"https://api.github.com/users/savageautomate/followers","following_url":"https://api.github.com/users/savageautomate/following{/other_user}","gists_url":"https://api.github.com/users/savageautomate/gists{/gist_id}","starred_url":"https://api.github.com/users/savageautomate/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/savageautomate/subscriptions","organizations_url":"https://api.github.com/users/savageautomate/orgs","repos_url":"https://api.github.com/users/savageautomate/repos","events_url":"https://api.github.com/users/savageautomate/events{/privacy}","received_events_url":"https://api.github.com/users/savageautomate/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":9,"state":"open","created_at":"2015-02-15T18:11:54Z","updated_at":"2015-09-07T23:29:38Z","due_on":"2015-07-01T04:00:00Z","closed_at":null},"comments":2,"created_at":"2015-05-06T19:51:59Z","updated_at":"2015-09-07T23:29:38Z","closed_at":"2015-09-07T23:29:38Z","body":"I was able to toggle with a pin at ~600Hz on Raspberry Pi B+.\r\n\r\nIt is caused by expensive method RaspiGpioProvider.hasPin() that calls GpioUtil.isPinSupported() that calls isPinValid() that calls getEdgePin() that calls piBoardId() that opens file descriptors and is very slow.\r\n\r\nI think we need different approach to check whether pin is available or not. Maybe the pin availability can be cached by some Hashmap or so.\r\n\r\nObserved in 1.1-SNAPSHOT"}}