반응형
위 코드는 비동기적으로 API 요청을 병렬로 처리하는 방식입니다. 병렬 처리와 직렬 처리의 차이를 이해하는 것은 비동기 프로그래밍에서 매우 중요합니다. 아래에서 두 방식을 비교해 설명하겠습니다.
병렬 처리 (Parallel Processing)
병렬 처리는 여러 작업을 동시에 처리하는 방식입니다. 위 코드에서 Future.wait(futures)를 사용하여 futures 리스트에 포함된 모든 비동기 작업을 동시에 실행하고, 모든 작업이 완료될 때까지 기다립니다. 각 정류장에 대해 도착 정보를 요청하는 작업이 병렬로 실행됩니다.
장점:
- 작업이 동시에 진행되므로 전체 실행 시간이 더 짧을 수 있습니다.
- 독립적인 작업을 동시에 처리하는 데 효율적입니다.
단점:
- 동시에 많은 작업이 실행되면, 네트워크나 시스템 자원에 부담을 줄 수 있습니다.
- 작업들 간의 순서 보장이 필요하지 않은 경우에만 적합합니다.
직렬 처리 (Serial Processing)
직렬 처리는 작업을 하나씩 순차적으로 처리하는 방식입니다. 작업이 순서대로 실행되며, 하나의 작업이 완료된 후에 다음 작업이 시작됩니다.
예시 코드:
dart
코드 복사
for (var stop in busStops) { final info = await apiService.fetchBusArrivalInfo(stop.nodeId, routeId); // 다음 작업은 이전 작업이 끝난 후에 실행됨 }
장점:
- 작업 간의 순서가 중요한 경우 적합합니다.
- 각 작업이 다른 작업에 의존적인 경우 안전합니다.
단점:
- 모든 작업이 순차적으로 실행되므로 전체 실행 시간이 길어질 수 있습니다.
- 독립적인 작업을 처리할 때 비효율적일 수 있습니다.
차이점 요약
- 실행 순서:
- 병렬: 모든 작업이 동시에 실행됨. 순서가 보장되지 않음.
- 직렬: 작업이 순차적으로 실행됨. 순서가 보장됨.
- 성능:
- 병렬: 더 빠른 성능을 제공할 수 있지만, 리소스 사용이 많을 수 있음.
- 직렬: 안정적이지만 전체 실행 시간이 길어질 수 있음.
- 사용 사례:
- 병렬: 독립적인 작업을 처리할 때 사용.
- 직렬: 작업 간의 순서가 중요하거나 작업이 서로 의존적일 때 사용.
결론
위 코드의 병렬 처리 방식은 각 정류장에 대한 API 요청이 서로 독립적이므로, 여러 요청을 동시에 처리하여 시간을 절약할 수 있습니다. 직렬 처리 방식에서는 하나의 요청이 완료된 후에 다음 요청이 시작되므로 시간이 더 많이 걸릴 수 있습니다. 병렬 처리를 사용하면 네트워크 및 시스템 자원을 더 효율적으로 활용할 수 있지만, 리소스가 제한된 환경에서는 조심해서 사용해야 합니다.
728x90
반응형
'Flutter-플러터' 카테고리의 다른 글
공공API 사용할 때 한글 깨짐 (0) | 2024.06.18 |
---|---|
path_provider , path 패키지를 이용해서 sqlite 백업 (0) | 2024.02.07 |
음식점 사장님 장부 앱 Test Code 3 : LinkedHasMap (1) | 2023.11.24 |
Flutter - Gap - SizedBox (0) | 2023.11.07 |
Flutter - supabase (0) | 2023.11.06 |