بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

تفاوت بین عملگر + و append و concat در هنگام کار با رشته ها (آموزش)

مدیریت گفتگو
behnam2000 10 سال پیش
آخرین تغییر: 10 سال پیش

 

سلام. دوستان این سه تا تقریبا کار مشابهی انجام میدن ولی از لحاظ مدت زمان اجرایی چطور؟

به مثال زیر توجه کنید:

  long now=System.currentTimeMillis();
        String a="yes";
        for(int i=0;i<=10000;i++){
            a = a.concat("yes");
        }
        Log.i("time","concat time:"+(System.currentTimeMillis()-now)+"ms"+"  str:"+a.length());
        now=System.currentTimeMillis();
        a="yes";
        for(int i=0;i<=10000;i++){
            a = a+"yes";
        }
        Log.i("time","+ time:"+(System.currentTimeMillis()-now)+"ms"+"  str:"+a.length());
        now=System.currentTimeMillis();
        StringBuilder sb = new StringBuilder("yes");
        for(int i=0;i<=10000;i++){
            sb.append("yes");
        }
        Log.i("time","append time:"+(System.currentTimeMillis()-now)+"ms"+"  str:"+sb.toString().length());

خروجی: 

 concat time:1601ms  str:30006
+ time:5395ms  str:30006
append time:6ms  str:30006

همانطور که مشاهده می کنید هر سه تا خروجی یکسانی تولید میکنند (البته با توجه به طول رشته) اما از لحاظ مدت زمان اجرای عملیات تفاوت چشم گیری وجود دارد!

  

نظرات

هنوز پاسخی ثبت نشده است


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .