Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Single Processor Multithreaded Application!!!!!!! Does it Help????????????????? [modified]

Single Processor Multithreaded Application!!!!!!! Does it Help????????????????? [modified]

Scheduled Pinned Locked Moved C / C++ / MFC
questiondesignsysadminperformancehelp
11 Posts 6 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S swarup

    Hay hi Guys i have a single processor in my system and in my application i create more then 1 thread, so does it enhance my application, as at a given point of time only instruction can be executed, how does it make difference, does it speed up my application, for example i am retrieving 500 web logs from a site, so if i create 10 threads in one go and in each thread i retrieve 1 log i have to make 50 calls at go which will fetch those 500 logs, so will it speed up the downloading or fetching up the logs or should i go with application thread which will fetch 1 by 1, which method will be useful........... or any idea or implimentaion idea.......... i am not concerned about the server bandwidth or speed of my processor, my Question is doing the repetitive work in one thread at a time with multiple time is faster or doing it in multiple threads is faster . P.S. not concerned about UI too thread t{ print 1;} /1st time .. thread t{ print 1;}/100th time OR thread {t0,t1,t2,t3,t4,t5,t6,t7,t8,t9}{print 1;}/1st 10 run .. thread {t0,t1,t2,t3,t4,t5,t6,t7,t8,t9}{print 1;}/last 10run=100 which will complete faster Thanks Swarup

    modified on Tuesday, February 19, 2008 5:12 PM

    M Offline
    M Offline
    Maximilien
    wrote on last edited by
    #2

    It can helps if you need to have your application front-end no locked up because of some code. for example, you have a UI that launch your log fetching thing, if you do that in a loop (in the default single thread), the UI will be locked until the loop is over. But if you start the fetching thing in a different thread, then your UI will still be alive. When you are dealing with concurrent connection, theoretically yes, it can increase the performance, but in practice, you will have some limitations due to the number of connections allowed, the bottleneck of your connection speed, ...

    Maximilien Lincourt Your Head A Splode - Strong Bad

    S 1 Reply Last reply
    0
    • M Maximilien

      It can helps if you need to have your application front-end no locked up because of some code. for example, you have a UI that launch your log fetching thing, if you do that in a loop (in the default single thread), the UI will be locked until the loop is over. But if you start the fetching thing in a different thread, then your UI will still be alive. When you are dealing with concurrent connection, theoretically yes, it can increase the performance, but in practice, you will have some limitations due to the number of connections allowed, the bottleneck of your connection speed, ...

      Maximilien Lincourt Your Head A Splode - Strong Bad

      S Offline
      S Offline
      swarup
      wrote on last edited by
      #3

      Thank you, but i am nt concerned bout UI part, becas i am handling UI in dif thread, i agree about UI, But what i am talking is, executing 100 threads is better or executing 1 thread is better. example 1 thread called 100 times to do the same work (same work each time) OR 10 threas called 10 times to do the same work (same work each time), which method is faster, which method will complete faster, thats wht i am asking............. Thanks again for ur reply...... thread t{ print 1;} /1st time .. thread t{ print 1;}/100th time OR thread {t0,t1,t2,t3,t4,t5,t6,t7,t8,t9}{print 1;}/1st 10 run .. thread {t0,t1,t2,t3,t4,t5,t6,t7,t8,t9}{print 1;}/last 10run=100 which will complete faster Swarup

      D 1 Reply Last reply
      0
      • S swarup

        Hay hi Guys i have a single processor in my system and in my application i create more then 1 thread, so does it enhance my application, as at a given point of time only instruction can be executed, how does it make difference, does it speed up my application, for example i am retrieving 500 web logs from a site, so if i create 10 threads in one go and in each thread i retrieve 1 log i have to make 50 calls at go which will fetch those 500 logs, so will it speed up the downloading or fetching up the logs or should i go with application thread which will fetch 1 by 1, which method will be useful........... or any idea or implimentaion idea.......... i am not concerned about the server bandwidth or speed of my processor, my Question is doing the repetitive work in one thread at a time with multiple time is faster or doing it in multiple threads is faster . P.S. not concerned about UI too thread t{ print 1;} /1st time .. thread t{ print 1;}/100th time OR thread {t0,t1,t2,t3,t4,t5,t6,t7,t8,t9}{print 1;}/1st 10 run .. thread {t0,t1,t2,t3,t4,t5,t6,t7,t8,t9}{print 1;}/last 10run=100 which will complete faster Thanks Swarup

        modified on Tuesday, February 19, 2008 5:12 PM

        L Offline
        L Offline
        led mike
        wrote on last edited by
        #4

        That depends entirely on the Server you are requesting from. If any of those requests will block at the same time that others won't then threads or even Overlapped I/O can, if done reasonably, reduce the total time to receive all 500 items.

        led mike

        S 1 Reply Last reply
        0
        • L led mike

          That depends entirely on the Server you are requesting from. If any of those requests will block at the same time that others won't then threads or even Overlapped I/O can, if done reasonably, reduce the total time to receive all 500 items.

          led mike

          S Offline
          S Offline
          swarup
          wrote on last edited by
          #5

          Thanks a lot, i am not concerned about the server bandwidth or speed of my processor, my Question is doing the repetative work in one thread multiple time is faster or doing it in multiple threads is faster . P.S. not concerned about UI too

          L 1 Reply Last reply
          0
          • S swarup

            Thanks a lot, i am not concerned about the server bandwidth or speed of my processor, my Question is doing the repetative work in one thread multiple time is faster or doing it in multiple threads is faster . P.S. not concerned about UI too

            L Offline
            L Offline
            led mike
            wrote on last edited by
            #6

            swarup wrote:

            i am not concerned about the server bandwidth

            swarup wrote:

            my Question is doing the repetative work in one thread multiple time is faster or doing it in multiple threads is faster

            Let me try to make my point a different way. If you had to do the same thing but all 500 files were on your local hard drive you would likely slow down overall processing by using more than a single thread to open and read the files into memory. Would it be measurable? Likely? Noticeable? Don't know. This is why the only thing that matters significantly is the Server. Of course if you can't depend on Server response being consistent at the various times you will be doing this you would have to develop algorithms to modify the approach dynamically based on Server response. So now what are you going to do?

            led mike

            S 1 Reply Last reply
            0
            • L led mike

              swarup wrote:

              i am not concerned about the server bandwidth

              swarup wrote:

              my Question is doing the repetative work in one thread multiple time is faster or doing it in multiple threads is faster

              Let me try to make my point a different way. If you had to do the same thing but all 500 files were on your local hard drive you would likely slow down overall processing by using more than a single thread to open and read the files into memory. Would it be measurable? Likely? Noticeable? Don't know. This is why the only thing that matters significantly is the Server. Of course if you can't depend on Server response being consistent at the various times you will be doing this you would have to develop algorithms to modify the approach dynamically based on Server response. So now what are you going to do?

              led mike

              S Offline
              S Offline
              swarup
              wrote on last edited by
              #7

              Hi Mike No i dont think so, take a scenario:: main() { thread t; for(i 0 to 100) {time = t.callme();} ///////so to complete will take 100sec // because one call then another call //now this way thread t[10]; for(i 0 to 10) {t[i].callme();} loop another 10 times more //////so will it take 100sec or less or more????????? ////at a given time 10 threads are running,so time taken should nt be 10 sec, right? it should be therotically 1 sec but say for example 5 secs, am i right???it should be less then 10 sec for 10 threads /////so what i am asking is???? the 2nd way will be faster or it will be the same???? } callme() { u called me,finished in 1 sec;////serverside ignore bandwidth, uniform response throughout } thanks Swarup

              L 1 Reply Last reply
              0
              • S swarup

                Hi Mike No i dont think so, take a scenario:: main() { thread t; for(i 0 to 100) {time = t.callme();} ///////so to complete will take 100sec // because one call then another call //now this way thread t[10]; for(i 0 to 10) {t[i].callme();} loop another 10 times more //////so will it take 100sec or less or more????????? ////at a given time 10 threads are running,so time taken should nt be 10 sec, right? it should be therotically 1 sec but say for example 5 secs, am i right???it should be less then 10 sec for 10 threads /////so what i am asking is???? the 2nd way will be faster or it will be the same???? } callme() { u called me,finished in 1 sec;////serverside ignore bandwidth, uniform response throughout } thanks Swarup

                L Offline
                L Offline
                led mike
                wrote on last edited by
                #8

                swarup wrote:

                No i dont think so,

                Whatever, I'm done.

                led mike

                1 Reply Last reply
                0
                • S swarup

                  Hay hi Guys i have a single processor in my system and in my application i create more then 1 thread, so does it enhance my application, as at a given point of time only instruction can be executed, how does it make difference, does it speed up my application, for example i am retrieving 500 web logs from a site, so if i create 10 threads in one go and in each thread i retrieve 1 log i have to make 50 calls at go which will fetch those 500 logs, so will it speed up the downloading or fetching up the logs or should i go with application thread which will fetch 1 by 1, which method will be useful........... or any idea or implimentaion idea.......... i am not concerned about the server bandwidth or speed of my processor, my Question is doing the repetitive work in one thread at a time with multiple time is faster or doing it in multiple threads is faster . P.S. not concerned about UI too thread t{ print 1;} /1st time .. thread t{ print 1;}/100th time OR thread {t0,t1,t2,t3,t4,t5,t6,t7,t8,t9}{print 1;}/1st 10 run .. thread {t0,t1,t2,t3,t4,t5,t6,t7,t8,t9}{print 1;}/last 10run=100 which will complete faster Thanks Swarup

                  modified on Tuesday, February 19, 2008 5:12 PM

                  D Offline
                  D Offline
                  David Crow
                  wrote on last edited by
                  #9

                  swarup wrote:

                  ...so does it enhance my application...

                  Highly doubtful, since all of the context switching would slow it down.

                  "Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman

                  "To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne

                  1 Reply Last reply
                  0
                  • S swarup

                    Hay hi Guys i have a single processor in my system and in my application i create more then 1 thread, so does it enhance my application, as at a given point of time only instruction can be executed, how does it make difference, does it speed up my application, for example i am retrieving 500 web logs from a site, so if i create 10 threads in one go and in each thread i retrieve 1 log i have to make 50 calls at go which will fetch those 500 logs, so will it speed up the downloading or fetching up the logs or should i go with application thread which will fetch 1 by 1, which method will be useful........... or any idea or implimentaion idea.......... i am not concerned about the server bandwidth or speed of my processor, my Question is doing the repetitive work in one thread at a time with multiple time is faster or doing it in multiple threads is faster . P.S. not concerned about UI too thread t{ print 1;} /1st time .. thread t{ print 1;}/100th time OR thread {t0,t1,t2,t3,t4,t5,t6,t7,t8,t9}{print 1;}/1st 10 run .. thread {t0,t1,t2,t3,t4,t5,t6,t7,t8,t9}{print 1;}/last 10run=100 which will complete faster Thanks Swarup

                    modified on Tuesday, February 19, 2008 5:12 PM

                    W Offline
                    W Offline
                    Waldermort
                    wrote on last edited by
                    #10

                    It really depends on what you are doing in the threads. Take your example, you have 100 log files to retrieve and process. Perhaps the time to retrieve a single log file would be about 0.5 seconds, then you do some processing, perhaps search a database, which may take anywhere between 0.1 and 10 seconds, then yes, using several threads would increase the speed. In this case, while one thread does a ten second search, another thread may complete 10 1 second searches. But, if the time is pretty much standard for each log file, then as David Crow said, the constant switching between threads will take away any performance gain.

                    Waldermort

                    1 Reply Last reply
                    0
                    • S swarup

                      Thank you, but i am nt concerned bout UI part, becas i am handling UI in dif thread, i agree about UI, But what i am talking is, executing 100 threads is better or executing 1 thread is better. example 1 thread called 100 times to do the same work (same work each time) OR 10 threas called 10 times to do the same work (same work each time), which method is faster, which method will complete faster, thats wht i am asking............. Thanks again for ur reply...... thread t{ print 1;} /1st time .. thread t{ print 1;}/100th time OR thread {t0,t1,t2,t3,t4,t5,t6,t7,t8,t9}{print 1;}/1st 10 run .. thread {t0,t1,t2,t3,t4,t5,t6,t7,t8,t9}{print 1;}/last 10run=100 which will complete faster Swarup

                      D Offline
                      D Offline
                      Dave Kreskowiak
                      wrote on last edited by
                      #11

                      swarup wrote:

                      is, executing 100 threads is better or executing 1 thread is better.

                      That depends on what each thread is doing.

                      swarup wrote:

                      1 thread called 100 times to do the same work (same work each time) OR 10 threas called 10 times to do the same work (same work each time), which method is faster, which method will complete faster

                      Neither will be faster than the other. On a single processor system, executing the same code 100 times, no matter how many threads you use to run the code will not execute any faster. If the code is 1,000 instructions, start-to-finish, the processor has to execute 1,000,000 instructions to get the job done. Since a single proc can only execute one instruction at a time, it doesn't matter how many threads you use, it's still 1,000,000 instructions to execute, one at a time. Now, if you have multiple processors, the CPU can start executing more than one instruction at the same time. The process CAN run faster, but in no way is this guaranteed. It depends on what this code, that your executing 100 times, is doing and how it affects the CPU, memory controller, caching, I/O, ..., ...

                      swarup wrote:

                      thread t{ print 1;} /1st time .. thread t{ print 1;}/100th time OR thread {t0,t1,t2,t3,t4,t5,t6,t7,t8,t9}{print 1;}/1st 10 run .. thread {t0,t1,t2,t3,t4,t5,t6,t7,t8,t9}{print 1;}/last 10run=100 which will complete faster

                      On a single core CPU, neither. You seem to have the misconception in your head that more threads = faster performance. Nothing could be further from the truth. Threading is a logical division of work, not a replacement for faster processing.

                      A guide to posting questions on CodeProject[^]
                      Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
                           2006, 2007

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups