시나리오
- 각 모듈마다 이미지 1건 이미지 크기 변환 처리.
- 각 10회 실시.각 모듈마다 이미지 10건 동시에 크기 변환 처리.
- 각 10회 실시.이미지 크기는 550x550, 500x500 크기로 두번 변환 처리.
- 각 모듈은 JAVA ProcessBuilder를 이용하여 모두 독립 Process로 실행.
- GraphicsMagick ./configure 컴파일 설치.
- nodejs yum 저장소에서 설치.
프레임워크 | 이미지 모듈명 | |
Spring Boot2 |
GraphicsMagick 1.3.33 |
Node Sharp 0.23.4 |
1. 테스트 서버 사양 및 구성
CPU |
CPU CORE |
RAM |
OS |
jdk |
Intel(R) Xeon(R) CPU ES-2650 v3 @ 2.30Ghz |
4코어 |
8GM |
Cent OS 7 |
openjdk 1.8.0_232 |
2. GraphicsMagick 성능
프레임워크 | 이미지 모듈명 | |
Spring Boot2 |
GraphicsMagick 1.3.33 |
2.1 이미지 1건씩 처리.
이미지 크기(pixel) | 1차(ms) | 2차(ms) | 3차(ms) | 4차(ms) | 5차(ms) | 6차(ms) | 7차(ms) | 8차(ms) | 9차(ms) | 10차(ms) |
550 |
1044 |
926 |
974 |
766 |
944 |
716 |
716 |
1013 |
1014 |
643 |
500 |
1040 |
1062 |
1012 |
887 |
1044 |
944 |
944 |
1027 |
1015 |
838 |
2.1.1 이미지 1건씩 처리 할 경우 CPU, DISK
2.2 이미지 10건씩 동시 처리.
이미지 크기(pixel) |
1차(ms) |
2차(ms) |
3차(ms) |
4차(ms) |
5차(ms) |
6차(ms) |
7차(ms) |
8차(ms) |
9차(ms) |
10차(ms) |
평균 처리 시간 |
550 |
1236 |
855 |
1017 |
1208 |
1367 |
1287 |
1169 |
865 |
1063 |
1118.556 |
|
500 |
1349 |
1237 |
1265 |
1271 |
1318 |
1364 |
1273 |
1301 |
1272 |
1294.444 |
|
550 |
1348 |
1315 |
1422 |
1426 |
1339 |
1336 |
1247 |
1370 |
1335 |
1348.667 |
|
500 |
1379 |
1327 |
1419 |
1460 |
1395 |
1387 |
1335 |
1442 |
1313 |
1384.111 |
|
550 |
1032 |
873 |
642 |
871 |
1077 |
900 |
977 |
1072 |
830 |
919.3333 |
|
500 |
935 |
904 |
1014 |
919 |
1239 |
963 |
993 |
918 |
1016 |
989 |
|
550 |
973 |
979 |
893 |
1090 |
1217 |
1139 |
1027 |
1113 |
1098 |
1058.778 |
|
500 |
1194 |
1001 |
934 |
1124 |
1261 |
1192 |
1043 |
1150 |
1183 |
1120.222 |
|
550 |
855 |
925 |
942 |
846 |
765 |
849 |
785 |
1290 |
777 |
892.6667 |
|
500 |
884 |
739 |
857 |
946 |
1079 |
900 |
909 |
1102 |
1226 |
960.2222 |
|
550 |
887 |
938 |
855 |
847 |
1085 |
890 |
976 |
909 |
990 |
930.7778 |
|
500 |
1107 |
937 |
946 |
960 |
1319 |
1022 |
991 |
1088 |
1168 |
1059.778 |
|
550 |
968 |
806 |
945 |
824 |
930 |
834 |
718 |
920 |
1027 |
885.7778 |
|
500 |
988 |
931 |
951 |
850 |
750 |
915 |
783 |
950 |
1153 |
919 |
|
550 |
1005 |
904 |
1029 |
857 |
1071 |
848 |
933 |
946 |
1148 |
971.2222 |
|
500 |
901 |
846 |
1008 |
920 |
962 |
886 |
946 |
1016 |
848 |
925.8889 |
|
550 |
765 |
804 |
933 |
968 |
852 |
993 |
852 |
649 |
976 |
865.7778 |
|
500 |
963 |
812 |
645 |
858 |
868 |
859 |
917 |
704 |
1107 |
859.2222 |
|
550 |
1212 |
874 |
855 |
854 |
762 |
846 |
896 |
838 |
996 |
903.6667 |
|
500 |
670 |
898 |
772 |
774 |
725 |
798 |
828 |
892 |
1072 |
825.4444 |
|
평균 처리 시간 |
1011.628 |
2.2.1 이미지 10건씩 동시 처리 할 경우 CPU, DISK I/O 처리
3. Nodejs+sharp성능
프레임워크 | 이미지 모듈명 | |
Spring Boot2 |
nodejs v10.17.0, sharp 0.23.4 |
3.1 이미지 1건씩 처리.
이미지 크기(pixel) |
1차(ms) |
2차(ms) |
3차(ms) |
4차(ms) |
5차(ms) |
6차(ms) |
7차(ms) |
8차(ms) |
9차(ms) |
10차(ms) |
550 |
537 |
607 |
625 |
591 |
660 |
589 |
645 |
601 |
601 |
618 |
500 |
724 |
629 |
691 |
648 |
657 |
646 |
661 |
674 |
645 |
669 |
3.2 CPU, DISK I/O 처리
3.2 이미지 10건씩 동시 처리.
이미지 크기(pixel) | 1차(ms) | 2차(ms) | 3차(ms) | 4차(ms) | 5차(ms) | 6차(ms) | 7차(ms) | 8차(ms) | 9차(ms) | 10차(ms) | 평균 처리 시간(ms) |
550 |
890 |
605 |
668 |
648 |
738 |
625 |
373 |
733 |
697 |
632 |
660.9 |
500 |
1144 |
770 |
608 |
779 |
740 |
600 |
552 |
745 |
702 |
633 |
727.3 |
550 |
1042 |
748 |
711 |
727 |
531 |
678 |
678 |
740 |
682 |
653 |
719 |
500 |
1097 |
765 |
707 |
740 |
536 |
733 |
713 |
751 |
792 |
766 |
760 |
550 |
458 |
523 |
463 |
365 |
413 |
475 |
487 |
481 |
399 |
374 |
443.8 |
500 |
448 |
471 |
489 |
425 |
729 |
477 |
421 |
440 |
436 |
498 |
483.4 |
550 |
441 |
424 |
449 |
395 |
703 |
429 |
436 |
617 |
428 |
469 |
479.1 |
500 |
440 |
442 |
403 |
595 |
715 |
392 |
531 |
649 |
482 |
432 |
508.1 |
550 |
442 |
580 |
405 |
595 |
651 |
430 |
449 |
441 |
422 |
433 |
484.8 |
500 |
407 |
511 |
494 |
530 |
445 |
457 |
387 |
588 |
393 |
398 |
461 |
550 |
431 |
520 |
474 |
553 |
438 |
370 |
440 |
552 |
385 |
421 |
458.4 |
500 |
524 |
559 |
576 |
426 |
417 |
495 |
357 |
408 |
426 |
404 |
459.2 |
550 |
375 |
594 |
495 |
551 |
517 |
480 |
444 |
384 |
629 |
471 |
494 |
500 |
435 |
652 |
375 |
470 |
505 |
485 |
492 |
658 |
732 |
447 |
525.1 |
550 |
532 |
555 |
524 |
406 |
756 |
527 |
463 |
658 |
711 |
434 |
556.6 |
500 |
422 |
594 |
589 |
471 |
634 |
530 |
457 |
615 |
545 |
494 |
535.1 |
550 |
403 |
471 |
470 |
359 |
682 |
410 |
425 |
481 |
438 |
353 |
449.2 |
500 |
380 |
462 |
454 |
386 |
451 |
403 |
349 |
411 |
498 |
411 |
420.5 |
550 |
345 |
551 |
587 |
377 |
344 |
415 |
536 |
392 |
548 |
395 |
449 |
500 |
511 |
563 |
450 |
358 |
429 |
440 |
427 |
614 |
406 |
457 |
465.5 |
평균 처리 시간 |
527 |
3.2.1 이미지 10건씩 동시 처리 할 경우
. 결론
- Linux에서 GraphicsMagick에 비하여 nodejs+sharp 모듈이 자원 활용도가 더 좋으며 속도도 2배가까이 빠르다.
이미지 크기변환에 사용할 모듈은 nodejs+sharp로 확정.
각 처리 환경에 따라 결과 값이 다를 수 있으므로 해당 지표는 참고만 하시고 직접 비교하기를 권장 함.
'Performance' 카테고리의 다른 글
MessagePack, ProtoBuf 성능 비교 (0) | 2020.09.16 |
---|---|
Java Template 성능 비교. (JSP VS Freemarker, Freemarker vs Thymeleaf) (2) | 2020.03.08 |
댓글