객체를 사용하여 성능 향상
객체를 반환하는 API를 호출할 때 해당 API를 여러 번 호출하는 것보다 객체를 로컬 변수에 저장하는 것이 항상 더 권장됩니다. 또한 많은 기본 API를 호출하여 사물을 한 번에 하나씩 얻는 것보다 단일 API를 호출하여 필요한 모든 것을 얻는 것이 더 좋습니다. 서버 구성에 따라 API를 사용하려면 서버와 다른 리소스 간에 왕복이 필요할 수 있습니다.
예: 속성 측면 정보 가져오기
이 예에서는 사물의 각 속성에 대한 측면 정보를 읽어들입니다. 이렇게 하려면 사물 정보를 JSON으로 가져온 다음 속성 정의에서 정보를 가져옵니다. 따라서 JSON 정보를 작성하기 위해 API 호출을 두 번 수행합니다.
Things[thingName]에서는 이름으로 필요한 사물을 검색합니다.
GetMetadataAsJSON()은 사물 엔티티 계층 구조를 탐색하여 사물에 대한 JSON 정보를 작성합니다.
잘못된 방법:
이 예에서는 매번 사물을 검색하고 모든 속성 호출에 대해 JSON 표현을 작성합니다.
var propertyNames = ["p1", "p2"]
for (var i = 0; i < propertyNames.length; i++)
logger.warn("Property [" + propertyNames[i] + "] cacheTime: " + Things[me.name].GetMetadataAsJSON().propertyDefinitions[propertyNames[i]].aspects.cacheTime)
}
올바른 방법:
이 예에서는 사물을 한 번 검색하고 JSON 객체를 한 번 작성한 다음 각 속성에 대한 속성 정의에서 값을 가져옵니다. 사물에 대해 여러 작업을 수행할 경우 Things[thingName]에서 사물 변수를 작성할 수 있습니다 . 이 경우 속성 정의만 필요하므로 속성 정의만 저장합니다.
var propertyNames = ["p1", "p2"]
var propertyDefinitions = Things[me.name].GetMetadataAsJSON().propertyDefinitions
for (var i = 0; i < propertyNames.length; i++)
logger.warn("Property [" + propertyNames[i] + "] cacheTime: " + propertyDefinitions[propertyNames[i]].aspects.cacheTime)
}
예: 속성 이름 가져오기
이 예에서는 사물에서 속성 정의를 가져오고 이름 목록을 작성하여 속성 이름 목록을 작성합니다. API를 두 번 호출합니다.
Things[thingName]에서는 이름으로 필요한 사물을 검색합니다.
GetPropertyDefinitions()는 사물을 호출하고 계층 구조를 탐색하여 속성 정의 목록을 작성합니다.
잘못된 방법:
이는 API를 호출하여 속성 수를 가져온 다음 정의를 호출하여 매번 이름과 설명을 가져오는 잘못된 예입니다. 모든 속성에 대해 사물 검색 및 속성 정의가 적어도 두 번 호출됩니다.
for (var i = 0; i < Things["MyThing"].GetPropertyDefinitions().length; i++) {
var newEntry = new Object();
newEntry.name = Things["MyThing"].GetPropertyDefinitions().rows[i].name;
newEntry.description = Things["MyThing"].GetPropertyDefinitions().rows[i].description;
result.AddRow(newEntry);
}
올바른 방법:
이 예에서는 모든 속성에 대해 사물 및 속성 정의 API를 한 번만 호출합니다.
var propDefs = Things["MyThing"].GetPropertyDefinitions();
for (var i = 0; i < propDefs.length; i++) {
var newEntry = new Object();
newEntry.name = propDefs.rows[i].name;
newEntry.description = propDefs.rows[i].description;
result.AddRow(newEntry);
}
도움이 되셨나요?