How can I speed up drupal's node_save() function?
You will never get 30 000 inserts a minute using node_save.
No way.

An INSERT is fast because that's all it does.
Node save does multiple inserts (main table, revision table, a table for each field), clears any entity caches, and fires hooks.
The hooks are the tricky part. If you have many contrib modules (or even one that misbehaves) that can really kill performance, especially if the author didn't account for the "I am saving a ton of nodes at once" use case.
For instance, I had to add this to my Migrate class:

  public function processImport(array $options = array()) {
    parent::processImport($options = array());
    // Do not force menu rebuilding. Otherwise pathauto will try to rebuild
    // in each node_save() invocation.
    variable_set('menu_rebuild_needed', FALSE);
  }


On the other hand, if you write a custom save function that invokes no hooks, you are in clear danger of getting inconsistent data, in a state that is unexpected by the system. I would never recommend doing that.
Fire up xhprof and see what's happening.