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 Offline
    S Offline
    swarup
    wrote on last edited by
    #1

    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 L D W 4 Replies 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

      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