You should read these articals on BSP tree and how it works
web page it's one of the articals i read a while back to learn how to get the most out of BSP tree level building for build time.
the key ISN'T the number of portals overall, but the number of portals within a portal region ( or as most BSP articals call it tree culling nodes) is what slows down and hangs the building algorithums. to have an idea, stand in a single room of your level, and turn all the way around 360 + looking up and down. how many surfaces can you see in that area ( including looking out doorways and window holes) now how many tiems does the textures on each of those surfaces tile ( when using a 64x64 texture). try counting how many tiles there are on all the surface faces you can see. because thats 'in a sense' basicly how each portal is built (albit hightly over simlified)
eliminate any portal that won't be visible and don't leave portals facing into the infinate space of the level if possible.( set them to a texture flaged to NONE )
build your level as a 'shell'. floors, walls, ceilings being mindful of visibility from one area to the next in your map. fill in details later like curved surfaces/unusual angular surfaces, objects, decorations with mdls, map entities, sprites and blocks set to detail flag.
avoid small block surfaces, ESPECALY ones that the surfaces are at an angle not aligned to the grid X/Y or Z axis directions ( good cause of them missaligned and misplaced portal errors) if you need a small surface use another method.