title: What is the fastest way to get a process name from a process id in C#
body: <p>I have the Windows process ID (<code>PID</code>) of a bunch of running programs in C#, and I need to know the process name (e.g. <code>chrome</code>) for informational display.</p>
  
  <p>I currently use this approach:</p>
  
  <pre><code>string processName;
  using(var process = Process.GetProcessById(pid))
  {
    processName = process.ProcessName; // THIS is costly
  }
  </code></pre>
  
  <p>It turns out it's one of the slowest function and most memory intensive in my diagnostics (according to Visual Studio Performance and Diagnostics). As an example, 70 calls requires 12.8 MB of memory. That's half of the total memory required by my app.</p>
  
  <p>What are alternative (and faster) ways of getting a process name (OR a useful process description) from C#?</p>
  
  <p><strong>Note: The code should run without administrator privileges</strong></p>