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. Other Discussions
  3. The Weird and The Wonderful
  4. Its always good to check for nothing.....

Its always good to check for nothing.....

Scheduled Pinned Locked Moved The Weird and The Wonderful
26 Posts 17 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.
  • I Ian Shlasko

    PIEBALDconsult wrote:

    But then the main developer decided to become clever and use Reflection to populate the User objects, and now it takes a half hour.

    1. Reflect once to get the property list 2) Use LINQ Expressions to compile mutators in memory 3) ??? 4) Profit!

    Proud to have finally moved to the A-Ark. Which one are you in?
    Author of the Guardians Saga (Sci-Fi/Fantasy novels)

    B Offline
    B Offline
    BobJanova
    wrote on last edited by
    #21

    Don't even have to be that clever, just caching the result of reflection calls in a Dictionary<string, PropertyInfo> takes away all the slowness. I've had to do that a few times over the years. Linq Expressions lets you write arguably more elegant code to do it, but might be a bit hard to get an incompetent developer to understand ;)

    I 1 Reply Last reply
    0
    • B BobJanova

      Don't even have to be that clever, just caching the result of reflection calls in a Dictionary<string, PropertyInfo> takes away all the slowness. I've had to do that a few times over the years. Linq Expressions lets you write arguably more elegant code to do it, but might be a bit hard to get an incompetent developer to understand ;)

      I Offline
      I Offline
      Ian Shlasko
      wrote on last edited by
      #22

      That makes it faster, but you're still adding boxing/unboxing, since PropertyInfo.Invoke() isn't strongly-typed. Not significant in small doses, but call it a few thousand times with primitive types and you'll notice a difference. My current implementation feeds the columns in a custom-made data grid, and that can seriously add up.

      Proud to have finally moved to the A-Ark. Which one are you in?
      Author of the Guardians Saga (Sci-Fi/Fantasy novels)

      B 1 Reply Last reply
      0
      • I Ian Shlasko

        That makes it faster, but you're still adding boxing/unboxing, since PropertyInfo.Invoke() isn't strongly-typed. Not significant in small doses, but call it a few thousand times with primitive types and you'll notice a difference. My current implementation feeds the columns in a custom-made data grid, and that can seriously add up.

        Proud to have finally moved to the A-Ark. Which one are you in?
        Author of the Guardians Saga (Sci-Fi/Fantasy novels)

        B Offline
        B Offline
        BobJanova
        wrote on last edited by
        #23

        That's true but I've done something similar (model-view binding into a data grid where the columns are based on properties of the data objects) and it was easily fast enough once I cached the PropertyInfos. I'm not saying you are wrong (you're not, your solution is better), just that you don't need to go to that level to get most of the benefit.

        1 Reply Last reply
        0
        • T Thanks7872

          foreach (var thisObjective in objectivesLst)
          {
          if (thisObjective.EndDate != null)
          {

          }
          else
          {

          }
          }

          And this beauty lies inside one of the wonderful projects i came across. I have not removed any code from the above snippet. This is part of the code which i found in completed project. This developer should really be awarded... :laugh:

          "When you don't know what you're doing it's best to do it quickly"- SoMad

          T Offline
          T Offline
          TheGreatAndPowerfulOz
          wrote on last edited by
          #24

          It's invisible NSA code

          If your actions inspire others to dream more, learn more, do more and become more, you are a leader.-John Q. Adams
          You must accept one of two basic premises: Either we are alone in the universe, or we are not alone in the universe. And either way, the implications are staggering.-Wernher von Braun
          Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.-Albert Einstein

          1 Reply Last reply
          0
          • N newton saber

            FUD* rules! You don't want to take it out, because it MAY do something. What if in it's nothingness it does a something? Hahaha - :D Besides, who cares? No one pays me to remove code. Do they? :D I'm trolling for people who think I'm serious. Are you one of them? *FUD - Fear, Uncertainty, Doubt

            S Offline
            S Offline
            Stefan_Lang
            wrote on last edited by
            #25

            Actually it does something: it reads Enddate, which may cause an access violation if it was called on an invalid object. I'm not sure what language that is from, so maybe it isn't possible to have an invalid object in the list, but then the entire list could be invalid, no?

            GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)

            1 Reply Last reply
            0
            • P PIEBALDconsult

              Indeed, get rid of the var and replace it with the actual type.

              You'll never get very far if all you do is follow instructions.

              B Offline
              B Offline
              Brady Kelly
              wrote on last edited by
              #26

              People were paid to make my compiler do that. And it does.

              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